diff --git a/BeetleX.Redis.XUnitTest/BeetleX.Redis.XUnitTest.csproj b/BeetleX.Redis.XUnitTest/BeetleX.Redis.XUnitTest.csproj index 87a64be..f0e1c91 100644 --- a/BeetleX.Redis.XUnitTest/BeetleX.Redis.XUnitTest.csproj +++ b/BeetleX.Redis.XUnitTest/BeetleX.Redis.XUnitTest.csproj @@ -6,6 +6,13 @@ false + + + + + + + diff --git a/BeetleX.Redis.XUnitTest/DBTester.cs b/BeetleX.Redis.XUnitTest/DBTester.cs index 5f0dfea..d7b750c 100644 --- a/BeetleX.Redis.XUnitTest/DBTester.cs +++ b/BeetleX.Redis.XUnitTest/DBTester.cs @@ -16,14 +16,9 @@ public class DBTester public DBTester(ITestOutputHelper output) { this.Console = output; - //DB.Host.AddWriteHost("192.168.2.19", 6378, true); -<<<<<<< HEAD - DB.Host.AddWriteHost("192.168.2.19", 6379); -======= DB.Host.AddWriteHost("127.0.0.1"); - DB.KeyPrefix = "bbq"; ->>>>>>> KeyPrefix - + DB.KeyPrefix = "BeetleX"; + DB.AutoPing = false; } private RedisDB DB = new RedisDB(0); @@ -100,7 +95,7 @@ public async void Set() var emptyValue = await DB.Get("test"); Write(emptyValue); - Assert.Equal(emptyValue, ""); + Assert.Equal(emptyValue, null); var nullResult = await DB.Set("test", null); @@ -108,7 +103,7 @@ public async void Set() var nullValue = await DB.Get("test"); Write(nullValue); - Assert.Equal(nullValue, ""); + Assert.Equal(nullValue, null); } diff --git a/BeetleX.Redis.XUnitTest/HashTableTester.cs b/BeetleX.Redis.XUnitTest/HashTableTester.cs index aa61867..3a3070e 100644 --- a/BeetleX.Redis.XUnitTest/HashTableTester.cs +++ b/BeetleX.Redis.XUnitTest/HashTableTester.cs @@ -12,7 +12,7 @@ public HashTableTester(ITestOutputHelper output) { this.Console = output; DB.Host.AddWriteHost("localhost"); - DB.KeyPrefix = "KV"; + DB.KeyPrefix = "BeetleX"; } private RedisDB DB = new RedisDB(0); @@ -73,7 +73,7 @@ public async void HGet() var emptyValue = await table.Get("fieldEmpty"); Write(emptyValue); - Assert.Equal(emptyValue, ""); + Assert.Equal(emptyValue, null); var nullResult = await table.Set("fieldNull", null); @@ -81,7 +81,7 @@ public async void HGet() var nullValue = await table.Get("fieldNull"); Write(nullValue); - Assert.Equal(nullValue, ""); + Assert.Equal(nullValue, null); } @@ -134,9 +134,9 @@ public async void HLen() public async void HMGet() { await DB.Flushall(); - var table = DB.CreateHashTable("myhash"); - Write(await table.MSet(("field1", "hello"), ("field2", "world"))); - var values = await table.Get("field1", "field2", "nofield"); +var table = DB.CreateHashTable("myhash"); +Write(await table.MSet(("field1", "hello"), ("field2", "world"))); +var values = await table.Get("field1", "field2", "nofield"); Write(values.Item1); Write(values.Item2); Write(values.Item3); diff --git a/BeetleX.Redis.XUnitTest/SequenceTest.cs b/BeetleX.Redis.XUnitTest/SequenceTest.cs index 9bc6681..06e9084 100644 --- a/BeetleX.Redis.XUnitTest/SequenceTest.cs +++ b/BeetleX.Redis.XUnitTest/SequenceTest.cs @@ -14,6 +14,7 @@ public SequenceTest(ITestOutputHelper output) { this.Console = output; DB.Host.AddWriteHost("localhost"); + DB.KeyPrefix = "BeetleX"; } private RedisDB DB = new RedisDB(0); @@ -50,7 +51,7 @@ public async void ZSCORE() var sequeue = DB.CreateSequence("seq2"); var count = await sequeue.ZAdd((4.14, "bca")); var value = await sequeue.ZScore("bca"); - Assert.Equal(value, 4.14); + Assert.Equal(value.Value, 4.14); var unknownMemberValue = await sequeue.ZScore("unknownseq"); Assert.Equal(unknownMemberValue, null); @@ -64,10 +65,10 @@ public async void ZINCRBY() var sequeue = DB.CreateSequence("seq2"); var count = await sequeue.ZAdd((4.14, member)); var value = await sequeue.ZScore(member); - Assert.Equal(value, 4.14); + Assert.Equal(value.Value, 4.14); await sequeue.ZIncrby(5, member); value = await sequeue.ZScore(member); - Assert.Equal(value, 9.14); + Assert.Equal(value.Value, 9.14); } [Fact] public async void ZCARD() @@ -161,7 +162,7 @@ public async void ZRANK() var sequeue = DB.CreateSequence("seq2"); await sequeue.ZAdd((100, "A1"), (200, "A2"), (300, "A3"), (400, "A4")); var value = await sequeue.ZRank("A4"); - Assert.Equal(value, 3); + Assert.Equal(value.Value, 3); var unknownMemberValue = await sequeue.ZRank("unknownseq"); diff --git a/BeetleX.Redis.XUnitTest/SetsTester.cs b/BeetleX.Redis.XUnitTest/SetsTester.cs index c32bc94..93ba538 100644 --- a/BeetleX.Redis.XUnitTest/SetsTester.cs +++ b/BeetleX.Redis.XUnitTest/SetsTester.cs @@ -17,7 +17,7 @@ public SetsTester(ITestOutputHelper output) DefaultRedis.Instance.Host.AddWriteHost("localhost"); DefaultRedis.Instance.DataFormater = new JsonFormater(); DB = DefaultRedis.Instance.Cloneable(); - DB.KeyPrefix = "HENRY"; + DB.KeyPrefix = "BeetleX"; } private RedisDB DB; diff --git a/src/BeetleX.Redis.csproj b/src/BeetleX.Redis.csproj index 70b851c..7252f21 100644 --- a/src/BeetleX.Redis.csproj +++ b/src/BeetleX.Redis.csproj @@ -2,7 +2,7 @@ netcoreapp2.1;netcoreapp3.1 - 1.2.4 + 1.3.1 beetlex.io henryfan Copyright © beetlex.io 2019-2021 @@ -17,11 +17,11 @@ - + - + diff --git a/src/Command.cs b/src/Command.cs index dee2bac..9538111 100644 --- a/src/Command.cs +++ b/src/Command.cs @@ -29,6 +29,8 @@ static Command() public static byte[] GetMsgHeaderLengthData(int length) { + if (length <= 0) + return null; if (length > MAX_LENGTH_TABLE) return null; return mMsgHeaderLenData[length - 1]; @@ -38,6 +40,8 @@ public static byte[] GetMsgHeaderLengthData(int length) public static byte[] GetBodyHeaderLenData(int length) { + if (length <= 0) + return null; if (length > MAX_LENGTH_TABLE) return null; return mBodyHeaderLenData[length - 1]; diff --git a/src/Commands/HSET.cs b/src/Commands/HSET.cs index 9050add..62df066 100644 --- a/src/Commands/HSET.cs +++ b/src/Commands/HSET.cs @@ -29,6 +29,8 @@ public override void OnExecute() base.OnExecute(); OnWriteKey(Key); AddText(Field); + if (Value == null) + Value = string.Empty; AddData(Value); } diff --git a/src/Commands/SET.cs b/src/Commands/SET.cs index fb0aa80..b5dbff1 100644 --- a/src/Commands/SET.cs +++ b/src/Commands/SET.cs @@ -31,6 +31,8 @@ public override void OnExecute() { base.OnExecute(); OnWriteKey(Key); + if (Data == null) + Data = string.Empty; AddData(Data); if (TimeOut > 0) { diff --git a/src/Commands/ZUNIONSTORE.cs b/src/Commands/ZUNIONSTORE.cs index 69e5f7f..8189f93 100644 --- a/src/Commands/ZUNIONSTORE.cs +++ b/src/Commands/ZUNIONSTORE.cs @@ -37,7 +37,7 @@ public override void OnExecute() AddText(Items.Length); foreach (var item in Items) { - AddText(item.key); + OnWriteKey(item.key); } AddText("WEIGHTS"); foreach (var item in Items) diff --git a/src/RedisDB.cs b/src/RedisDB.cs index 276cf68..0ddf21e 100644 --- a/src/RedisDB.cs +++ b/src/RedisDB.cs @@ -90,6 +90,7 @@ public RedisStream GetStream(string name) public RedisDB Cloneable(IDataFormater dataFormater = null) { var result = new RedisDB(this.DB, dataFormater, this); + result.KeyPrefix = this.KeyPrefix; return result; } @@ -163,7 +164,7 @@ public async Task Execute(Command cmd, params Type[] types) return new Result() { ResultType = ResultType.NetError, Messge = "exceeding maximum number of connections" }; try { - var result = host.Connect(this,client); + var result = host.Connect(this, client); if (result.IsError) { return result; @@ -661,7 +662,7 @@ public async Task PFMerge(string key, params string[] items) throw new RedisException(result.Messge); } - + public async ValueTask Info(InfoSection? section = null) diff --git a/src/Sequence.cs b/src/Sequence.cs index 47472dc..0c53fff 100644 --- a/src/Sequence.cs +++ b/src/Sequence.cs @@ -28,12 +28,14 @@ public async ValueTask ZAdd(params (double, string)[] items) return (long)result.Value; } - public async ValueTask ZScore(string member) + public async ValueTask ZScore(string member) { ZSCORE cmd = new ZSCORE(Key, member); var result = await DB.Execute(cmd, typeof(string)); if (result.IsError) throw new RedisException(result.Messge); + if (result.Value == null) + return null; return System.Convert.ToDouble(result.Value); } @@ -114,12 +116,14 @@ public async ValueTask ZCount(double min, double max) return GetItems(result, withscores); } - public async ValueTask ZRank(string member) + public async ValueTask ZRank(string member) { ZRANK cmd = new ZRANK(Key, member); var result = await DB.Execute(cmd, typeof(string)); if (result.IsError) throw new RedisException(result.Messge); + if (result.Value == null) + return null; return System.Convert.ToInt64(result.Value); } @@ -211,7 +215,7 @@ public ValueTask ZUnionsStore(params string[] keys) return ZUnionsStore(items); } - public ValueTask ZUnionsStore(params (string key, double weight)[] items) + public ValueTask ZUnionsStore(params (string key, double weight)[] items) { return ZUnionsStore(items, ZUNIONSTORE.AggregateType.SUM); }