From ca6c775e90de1042ee8ebc9d7eb57aaf989d7200 Mon Sep 17 00:00:00 2001 From: ruyu Date: Sun, 1 Jul 2018 23:18:07 +0800 Subject: [PATCH] RedisSortedSetStudyTest --- RedisStudyTest/RedisLockStudyTest.cs | 3 +- RedisStudyTest/RedisSortedSetStudyTest.cs | 105 ++++++++++++++++++++-- RedisStudyTest/RedisStringStudyTest.cs | 1 - RedisStuy/RedisSortedSetStudy.cs | 4 +- 4 files changed, 104 insertions(+), 9 deletions(-) diff --git a/RedisStudyTest/RedisLockStudyTest.cs b/RedisStudyTest/RedisLockStudyTest.cs index fb602a3..8467a23 100644 --- a/RedisStudyTest/RedisLockStudyTest.cs +++ b/RedisStudyTest/RedisLockStudyTest.cs @@ -29,13 +29,12 @@ namespace RedisStudyTest public void RedisLockTest() { //启动50个线程 - for (int i = 0; i < 50; i++) + for (int i = 0; i < 10; i++) { var cc = new Thread(new ThreadStart(MyRedisLock)); //调用Start方法执行线程 cc.Start(); } - //MyRedisLock(); } private void MyRedisLock() diff --git a/RedisStudyTest/RedisSortedSetStudyTest.cs b/RedisStudyTest/RedisSortedSetStudyTest.cs index 24a4b0f..aa83f28 100644 --- a/RedisStudyTest/RedisSortedSetStudyTest.cs +++ b/RedisStudyTest/RedisSortedSetStudyTest.cs @@ -51,7 +51,7 @@ namespace RedisStudyTest var exits = redisDatabase.KeyExists(defaultRedisKey); Assert.False(exits); - var result = redisSortedSetStudy.SortedSetAdd(defaultRedisKey,"first",1,CommandFlags.None); + var result = redisSortedSetStudy.SortedSetAdd(defaultRedisKey, "first", 1, CommandFlags.None); Assert.True(result); var number = redisSortedSetStudy.SortedSetLength(defaultRedisKey); @@ -61,13 +61,108 @@ namespace RedisStudyTest [Fact] public void SetAdd_SortedSetEntrys_Empty_Test() { - SortedSetEntry sortedSetEntry = new SortedSetEntry("first", 1); - var addNumber = redisSortedSetStudy.SortedSetAdd(defaultRedisKey, new SortedSetEntry[] { }, CommandFlags.None); Assert.Equal(0, addNumber); + } - var result = redisSortedSetStudy.SortedSetAdd(defaultRedisKey, "first",1,CommandFlags.None); - Assert.True(result); + [Fact] + public void SetAddByOneTest() + { + //重载方法1 + var addResult = redisSortedSetStudy.SortedSetAdd(defaultRedisKey,"first",1); + Assert.True(addResult); + + //重载方法2 + var addResult2 = redisSortedSetStudy.SortedSetAdd(defaultRedisKey, "second", 2, CommandFlags.None); + Assert.True(addResult2); + + //反向验证 + var members = redisSortedSetStudy.SortedSetLength(defaultRedisKey); + Assert.Equal(2, members); + } + + [Fact] + public void SetAddByGroupTest() + { + SortedSetEntry[] sortedSetEntrys = new SortedSetEntry[] + { + new SortedSetEntry("first", 1), + new SortedSetEntry("second", 2), + new SortedSetEntry("third", 3), + new SortedSetEntry("four", 4), + new SortedSetEntry("five", 5), + }; + + SortedSetEntry[] sortedSetEntrys2 = new SortedSetEntry[] + { + new SortedSetEntry("six", 6), + new SortedSetEntry("seven", 7), + }; + + //重载方法1 + var memberNumber = redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntrys, CommandFlags.None); + Assert.Equal(5, memberNumber); + + //重载方法2 + var memberNumber2 = redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntrys2, When.Always, CommandFlags.None); + Assert.Equal(2, memberNumber2); + + //验证数据 + var totalNumber = redisSortedSetStudy.SortedSetLength(defaultRedisKey); + + Assert.Equal(7, totalNumber); + } + #endregion + + #region SortedSetIncrement + + [Fact] + public void SortedSetIncrement_NotKey_Test() + { + var incResult = redisSortedSetStudy.SortedSetIncrement(defaultRedisKey, "first", 1.0); + Assert.Equal(1.0, incResult); + } + + [Fact] + public void SortedSetIncrementTest() + { + var incResult = redisSortedSetStudy.SortedSetIncrement(defaultRedisKey, "first", 1.0); + Assert.Equal(1.0, incResult); + + incResult = redisSortedSetStudy.SortedSetIncrement(defaultRedisKey, "first", 1.5); + double differenceValue = incResult - 2.5; + Assert.True(differenceValue < 0.01); + + //增加负值等于减少 + incResult = redisSortedSetStudy.SortedSetIncrement(defaultRedisKey, "first", -2.1); + differenceValue =0.4 - incResult; + Assert.True(differenceValue < 0.01); + } + #endregion + + #region SortedSetDecrement + + [Fact] + public void SortedSetDecrement_NotKey_Test() + { + var incResult = redisSortedSetStudy.SortedSetDecrement(defaultRedisKey, "first", 1.0); + Assert.Equal(-1.0, incResult); + } + + [Fact] + public void SortedSetDecrementTest() + { + var decResult = redisSortedSetStudy.SortedSetIncrement(defaultRedisKey, "first", -1.0); + Assert.Equal(-1.0, decResult); + + decResult = redisSortedSetStudy.SortedSetIncrement(defaultRedisKey, "first", -1.5); + double differenceValue =Math.Abs( -2.5 - decResult); + Assert.True(differenceValue < 0.01); + + //减少负值等于增加 + decResult = redisSortedSetStudy.SortedSetIncrement(defaultRedisKey, "first", 2.1); + differenceValue =Math.Abs(-0.4 - decResult); + Assert.True(differenceValue < 0.01); } #endregion diff --git a/RedisStudyTest/RedisStringStudyTest.cs b/RedisStudyTest/RedisStringStudyTest.cs index 52a4236..b00286d 100644 --- a/RedisStudyTest/RedisStringStudyTest.cs +++ b/RedisStudyTest/RedisStringStudyTest.cs @@ -138,7 +138,6 @@ namespace RedisStudyTest var redisValue = redisStringStudy.StringGet(defaultRedisKey); var anonymousType = JsonConvert.DeserializeAnonymousType(redisValue, stuent); Assert.True(anonymousType.Id == stuent.Id && anonymousType.Name == stuent.Name && anonymousType.Age == stuent.Age && anonymousType.Number == stuent.Number); - } /// diff --git a/RedisStuy/RedisSortedSetStudy.cs b/RedisStuy/RedisSortedSetStudy.cs index 4150f5d..53f93a9 100644 --- a/RedisStuy/RedisSortedSetStudy.cs +++ b/RedisStuy/RedisSortedSetStudy.cs @@ -23,7 +23,7 @@ namespace RedisStuy /// 如果这个 member 已经是有序集的成员,那么更新这个 member 的 score 值, /// 并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。 /// - public bool SortedSetAdd(RedisKey key, RedisValue member, double score,CommandFlags flags=CommandFlags.None) + public bool SortedSetAdd(RedisKey key, RedisValue member, double score, CommandFlags flags) { return redisDatabase.SortedSetAdd(key, member, score, flags); } @@ -44,6 +44,7 @@ namespace RedisStuy /// 如果某个 SortedSetEntry 已经是有序集的成员,那么更新这个 member 的 score 值, /// 并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。 /// + /// 添加到排序集合中的元素的数量,不包括已被更新的元素。 public long SortedSetAdd(RedisKey key, SortedSetEntry[] values, CommandFlags flags) { return redisDatabase.SortedSetAdd(key, values,flags); @@ -54,6 +55,7 @@ namespace RedisStuy /// 如果某个 SortedSetEntry 已经是有序集的成员,那么更新这个 member 的 score 值, /// 并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。 /// + /// 添加到排序集合中的元素的数量,不包括已被更新的元素。 public long SortedSetAdd(RedisKey key, SortedSetEntry[] values, When when = When.Always, CommandFlags flags = CommandFlags.None) { return redisDatabase.SortedSetAdd(key, values,when, flags);