Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 29c3d01

Browse files
committed
Send SELECT command when changing DB if connection exists
1 parent 0ae2f16 commit 29c3d01

File tree

5 files changed

+57
-6
lines changed

5 files changed

+57
-6
lines changed

src/ServiceStack.Redis/RedisClient.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -237,12 +237,6 @@ public bool SetValueIfNotExists(string key, string value, TimeSpan expireIn)
237237
return base.Set(key, bytesValue, exists: false, expirySeconds: (int)expireIn.TotalSeconds);
238238
}
239239

240-
public void ChangeDb(long db)
241-
{
242-
Db = db;
243-
SendExpectSuccess(Commands.Select, db.ToUtf8Bytes());
244-
}
245-
246240
[Obsolete("Use GetClientsInfo")]
247241
public List<Dictionary<string, string>> GetClientList()
248242
{

src/ServiceStack.Redis/RedisNativeClient.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,9 +211,20 @@ public long Db
211211
set
212212
{
213213
db = value;
214+
215+
if (HasConnected)
216+
{
217+
ChangeDb(db);
218+
}
214219
}
215220
}
216221

222+
public void ChangeDb(long db)
223+
{
224+
this.db = db;
225+
SendExpectSuccess(Commands.Select, db.ToUtf8Bytes());
226+
}
227+
217228
public long DbSize
218229
{
219230
get

src/ServiceStack.Redis/RedisNativeClient_Utils.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,11 @@ protected string ReadLine()
217217
return sb.ToString();
218218
}
219219

220+
public bool HasConnected
221+
{
222+
get { return socket != null; }
223+
}
224+
220225
public bool IsSocketConnected()
221226
{
222227
var part1 = socket.Poll(1000, SelectMode.SelectRead);
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
using NUnit.Framework;
2+
3+
namespace ServiceStack.Redis.Tests
4+
{
5+
public class BasicRediscClientManagerTests
6+
: RedisClientTestsBase
7+
{
8+
[Test]
9+
public void Can_select_db()
10+
{
11+
var redisManager = new BasicRedisClientManager("127.0.0.1");
12+
13+
using (var client = redisManager.GetClient())
14+
{
15+
client.Db = 2;
16+
client.Set("db", 2);
17+
}
18+
19+
using (var client = redisManager.GetClient())
20+
{
21+
client.Db = 3;
22+
client.Set("db", 3);
23+
}
24+
25+
using (var client = redisManager.GetClient())
26+
{
27+
client.Db = 2;
28+
var db = client.Get<int>("db");
29+
Assert.That(db, Is.EqualTo(2));
30+
}
31+
32+
redisManager = new BasicRedisClientManager("127.0.0.1?db=3");
33+
using (var client = redisManager.GetClient())
34+
{
35+
var db = client.Get<int>("db");
36+
Assert.That(db, Is.EqualTo(3));
37+
}
38+
}
39+
}
40+
}

tests/ServiceStack.Redis.Tests/ServiceStack.Redis.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@
181181
</ItemGroup>
182182
<ItemGroup>
183183
<Compile Include="AdhocClientTests.cs" />
184+
<Compile Include="BasicRediscClientManagerTests.cs" />
184185
<Compile Include="ConfigTests.cs" />
185186
<Compile Include="CustomCommandTests.cs" />
186187
<Compile Include="LuaCachedScripts.cs" />

0 commit comments

Comments
 (0)