diff --git a/RedisStudyTest/RedisSortedSetStudyTest.cs b/RedisStudyTest/RedisSortedSetStudyTest.cs
index ac68bc5..420388c 100644
--- a/RedisStudyTest/RedisSortedSetStudyTest.cs
+++ b/RedisStudyTest/RedisSortedSetStudyTest.cs
@@ -40,7 +40,7 @@ namespace RedisStudyTest
}
#endregion
- #region SetAdd
+ #region SortedSetAdd
[Fact]
public void SortedAdd_NotKey_Test()
@@ -370,6 +370,15 @@ namespace RedisStudyTest
}
#endregion
+ #region SortedSetScore
+
+ [Fact]
+ public void SortedSetScoreTest()
+ {
+ //redisSortedSetStudy.SortedSetScore();
+ }
+ #endregion
+
#region SortedSetRangeByRank
[Fact]
@@ -408,166 +417,40 @@ namespace RedisStudyTest
}
#endregion
- #region SortedSetLengthByValue
-
+ #region SortedSetRangeByRankWithScores
[Fact]
- public void SortedSetRangeByValue_NotKey_Test()
+ public void SortedSetRangeByRankWithScores_NotKey_Test()
{
- var mumbers = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, 0, -1);
-
- Assert.Empty(mumbers);
+ var sortedSetEntries = redisSortedSetStudy.SortedSetRangeByRankWithScores(defaultRedisKey);
+ Assert.Empty(sortedSetEntries);
}
- ///
- /// 排它性参数Exclude设置 测试
- ///
[Fact]
- public void SortedSetRangeByValue_Exclude_Test()
+ public void SortedSetRangeByRankWithScoresTest()
{
SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
{
- new SortedSetEntry("first",0),
- new SortedSetEntry("second",0),
- new SortedSetEntry("third",0),
- new SortedSetEntry("four",0),
- new SortedSetEntry("five",0),
+ new SortedSetEntry("first",1),
+ new SortedSetEntry("second",2),
+ new SortedSetEntry("third",3),
+ new SortedSetEntry("four",4),
+ new SortedSetEntry("five",5),
};
redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
- //默认:Exclude.None [Start,Stop]
- var members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "first", "second", Exclude.None);
- //firt five four second
- Assert.Equal(4, members.Length);
-
- //Exclude.Start (Start,Stop]
- members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "first", "second", Exclude.Start);
- //five four second
- Assert.Equal(3, members.Length);
-
- //Exclude.Stop [Start,Stop)
- members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "first", "four", Exclude.Stop);
- Assert.Equal(2, members.Length);
-
- //Exclude.Both (Start,Stop)
- members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "first", "four", Exclude.Both);
- Assert.Single(members);
- }
-
- ///
- /// 分数相同,字典排序,逐字符比较(汉字的比较等待确认)
- /// 字典顺序(”0”<…<”9”<”A”<…<”Z”<”a”<…<”z”)
- ///
- [Fact]
- public void SortedSetRangeByValueTest()
- {
- SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
+ var queryEntries = redisSortedSetStudy.SortedSetRangeByRankWithScores(defaultRedisKey);
+ Assert.NotEmpty(queryEntries);
+ for (var i = 0; i < sortedSetEntries.Length; i++)
{
- new SortedSetEntry("Andy",0),
- new SortedSetEntry("and",0),
- new SortedSetEntry("And",0),
- new SortedSetEntry("Banana",0),
- new SortedSetEntry("color",0),
- new SortedSetEntry("query",0),
- new SortedSetEntry("remove",0),
- new SortedSetEntry("101",0),
- new SortedSetEntry("304",0),
- new SortedSetEntry("404",0),
- new SortedSetEntry("王高峰",0),
- new SortedSetEntry("刘山东",0),
- };
- redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
-
- //数字排序
- var members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "0", "5");
- Assert.Contains("101", members);
- Assert.Contains("304", members);
- Assert.Contains("404", members);
-
- members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "10", "4");
- Assert.Contains("101", members);
- Assert.Contains("304", members);
-
- members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "11", "40");
- Assert.Contains("304", members);
-
- //字母排序
- members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "And", "color");
- //And Andy Banana and color
- Assert.Contains("And", members);
- Assert.Contains("Andy", members);
- Assert.Contains("Banana", members);
- Assert.Contains("and", members);
- Assert.Contains("color", members);
-
- members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "A", "color");
- //And Andy Banana and color
- Assert.Contains("And", members);
- Assert.Contains("Andy", members);
- Assert.Contains("Banana", members);
- Assert.Contains("and", members);
- Assert.Contains("color", members);
-
- members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "A", "B");
- //And Andy 不包括Banana,因为Ba排在B后
- Assert.Contains("And", members);
- Assert.Contains("Andy", members);
-
- members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "A", "Bb");
- //And Andy Banana
- Assert.Contains("And", members);
- Assert.Contains("Andy", members);
- Assert.Contains("Banana", members);
-
- //TODO:汉字排序规则不清楚
- members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "王", "赵");
- //王高峰
- Assert.Contains("王高峰", members);
- }
-
- ///
- /// 分页测试
- ///
- [Fact]
- public void SortedSetRangeByValue_Page_Test()
- {
- SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
- {
- new SortedSetEntry("Andy",0),
- new SortedSetEntry("and",0),
- new SortedSetEntry("And",0),
- new SortedSetEntry("Banana",0),
- new SortedSetEntry("color",0),
- new SortedSetEntry("query",0),
- new SortedSetEntry("remove",0),
- new SortedSetEntry("101",0),
- new SortedSetEntry("304",0),
- new SortedSetEntry("404",0),
- new SortedSetEntry("王高峰",0),
- new SortedSetEntry("刘山东",0),
- };
- redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
-
- //第一页
- var members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "101", "remove", Exclude.None, 0, 4, CommandFlags.None);
- Assert.Equal(4, members.Length);
- Assert.Contains("101", members);
- Assert.Contains("304", members);
- Assert.Contains("404", members);
- Assert.Contains("And", members);
+ Assert.Equal(sortedSetEntries[0], queryEntries[0]);
+ }
- //第2页
- members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "101", "remove", Exclude.None, 4, 4, CommandFlags.None);
- Assert.Equal(4, members.Length);
- Assert.Contains("Andy", members);
- Assert.Contains("Banana", members);
- Assert.Contains("and", members);
- Assert.Contains("color", members);
-
- //第3页
- members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "101", "remove", Exclude.None, 8, 4, CommandFlags.None);
- Assert.Equal(2, members.Length);
- Assert.Contains("query", members);
- Assert.Contains("remove", members);
+ queryEntries = redisSortedSetStudy.SortedSetRangeByRankWithScores(defaultRedisKey, 1, -1, Order.Descending, CommandFlags.None);
+ //four third second first
+ Assert.Equal(sortedSetEntries[3], queryEntries[0]);
+ Assert.Equal(sortedSetEntries[2], queryEntries[1]);
+ Assert.Equal(sortedSetEntries[1], queryEntries[2]);
+ Assert.Equal(sortedSetEntries[0], queryEntries[3]);
}
#endregion
@@ -742,6 +625,340 @@ namespace RedisStudyTest
#endregion
+ #region SortedSetRangeByScoreWithScores
+ [Fact]
+ public void SortedSetRangeByScoreWithScores_NotKey_Test()
+ {
+ var members = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey);
+ Assert.Empty(members);
+ }
+
+ ///
+ /// 排它性参数Exclude设置 测试
+ ///
+ [Fact]
+ public void SortedSetRangeByScoreWithScores_Exclude_Test()
+ {
+ SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
+ {
+ new SortedSetEntry("first",1),
+ new SortedSetEntry("second",2),
+ new SortedSetEntry("third",3),
+ new SortedSetEntry("four",4),
+ new SortedSetEntry("five",5),
+ };
+ redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
+
+ //默认:Exclude.None [Start,Stop]
+ var queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, 2, 4, Exclude.None);
+ Assert.Equal(3, queryEntries.Length);
+ Assert.Contains("second", queryEntries[0].Element);
+ Assert.Contains("third", queryEntries[1].Element);
+ Assert.Contains("four", queryEntries[2].Element);
+
+ //Exclude.Start (Start,Stop]
+ queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, 2, 4, Exclude.Start);
+ Assert.Equal(2, queryEntries.Length);
+ Assert.Contains("third", queryEntries[0].Element);
+ Assert.Contains("four", queryEntries[1].Element);
+
+ //Exclude.Stop [Start,Stop)
+ queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, 2, 4, Exclude.Stop);
+ Assert.Equal(2, queryEntries.Length);
+ Assert.Contains("second", queryEntries[0].Element);
+ Assert.Contains("third", queryEntries[1].Element);
+
+ //Exclude.Both (Start,Stop)
+ queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, 2, 4, Exclude.Both);
+ Assert.Single(queryEntries);
+ Assert.Contains("third", queryEntries[0].Element);
+ }
+
+ ///
+ /// 排序参数测试
+ ///
+ [Fact]
+ public void SortedSetRangeByScoreWithScores_Sort_Test()
+ {
+ SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
+ {
+ new SortedSetEntry("first",1),
+ new SortedSetEntry("second",2),
+ new SortedSetEntry("third",3),
+ new SortedSetEntry("four",4),
+ new SortedSetEntry("five",5),
+ };
+ redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
+
+ //默认:升序
+ var queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, 2, 4, Exclude.None, Order.Ascending);
+ Assert.Equal(3, queryEntries.Length);
+ Assert.Equal("second", queryEntries[0].Element);
+ Assert.Equal("third", queryEntries[1].Element);
+ Assert.Equal("four", queryEntries[2].Element);
+
+ //降序
+ queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, 2, 4, Exclude.None, Order.Descending);
+ Assert.Equal(3, queryEntries.Length);
+ Assert.Equal("four", queryEntries[0].Element);
+ Assert.Equal("third", queryEntries[1].Element);
+ Assert.Equal("second", queryEntries[2].Element);
+ }
+
+ ///
+ /// 分页测试
+ ///
+ [Fact]
+ public void SortedSetRangeByScoreWithScores_Page_Test()
+ {
+ SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
+ {
+ new SortedSetEntry("Andy",1),
+ new SortedSetEntry("and",2),
+ new SortedSetEntry("And",3),
+ new SortedSetEntry("Banana",4),
+ new SortedSetEntry("color",5),
+ new SortedSetEntry("query",6),
+ new SortedSetEntry("remove",7),
+ new SortedSetEntry("101",8),
+ new SortedSetEntry("304",9),
+ new SortedSetEntry("404",10),
+ new SortedSetEntry("王高峰",11),
+ new SortedSetEntry("刘山东",12),
+ };
+ redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
+
+ //第一页
+ var queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, double.MinValue, double.MaxValue, Exclude.None, Order.Ascending, 0, 4, CommandFlags.None);
+ Assert.Equal(4, queryEntries.Length);
+ Assert.Equal(sortedSetEntries[0], queryEntries[0]);
+ Assert.Equal(sortedSetEntries[1], queryEntries[1]);
+ Assert.Equal(sortedSetEntries[2], queryEntries[2]);
+ Assert.Equal(sortedSetEntries[3], queryEntries[3]);
+
+ //第2页
+ queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, double.NegativeInfinity, double.PositiveInfinity, Exclude.None, Order.Ascending, 4, 4, CommandFlags.None);
+ Assert.Equal(4, queryEntries.Length);
+ Assert.Equal(sortedSetEntries[4], queryEntries[0]);
+ Assert.Equal(sortedSetEntries[5], queryEntries[1]);
+ Assert.Equal(sortedSetEntries[6], queryEntries[2]);
+ Assert.Equal(sortedSetEntries[7], queryEntries[3]);
+
+ //第3页
+ queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, double.NegativeInfinity, double.PositiveInfinity, Exclude.None, Order.Ascending, 8, 4, CommandFlags.None);
+ Assert.Equal(4, queryEntries.Length);
+ Assert.Equal(sortedSetEntries[8], queryEntries[0]);
+ Assert.Equal(sortedSetEntries[9], queryEntries[1]);
+ Assert.Equal(sortedSetEntries[10], queryEntries[2]);
+ Assert.Equal(sortedSetEntries[11], queryEntries[3]);
+ }
+
+ [Fact]
+ public void SortedSetRangeByScoreWithScoresTest()
+ {
+ SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
+ {
+ new SortedSetEntry("Andy",1),
+ new SortedSetEntry("and",2),
+ new SortedSetEntry("And",3),
+ new SortedSetEntry("Banana",4),
+ new SortedSetEntry("color",5),
+ new SortedSetEntry("query",6),
+ new SortedSetEntry("remove",7),
+ new SortedSetEntry("101",8),
+ new SortedSetEntry("304",9),
+ new SortedSetEntry("404",10),
+ new SortedSetEntry("王高峰",11),
+ new SortedSetEntry("刘山东",12),
+ };
+ redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
+
+ var queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, 1, 5);
+ Assert.Equal(5, queryEntries.Length);
+ Assert.Equal("Andy", queryEntries[0].Element);
+ Assert.Equal("and", queryEntries[1].Element);
+ Assert.Equal("And", queryEntries[2].Element);
+ Assert.Equal("Banana", queryEntries[3].Element);
+ Assert.Equal("color", queryEntries[4].Element);
+
+ queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, 5, 7, Exclude.None, Order.Descending);
+ Assert.Equal(3, queryEntries.Length);
+ Assert.Equal("remove", queryEntries[0].Element);
+ Assert.Equal("query", queryEntries[1].Element);
+ Assert.Equal("color", queryEntries[2].Element);
+
+ queryEntries = redisSortedSetStudy.SortedSetRangeByScoreWithScores(defaultRedisKey, double.NegativeInfinity, double.PositiveInfinity);
+ Assert.Equal(12, queryEntries.Length);
+ Assert.Equal("Andy", queryEntries[0].Element);
+ Assert.Equal("刘山东", queryEntries[11].Element);
+ }
+ #endregion
+
+ #region SortedSetRangeByValue
+
+ [Fact]
+ public void SortedSetRangeByValue_NotKey_Test()
+ {
+ var mumbers = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, 0, -1);
+
+ Assert.Empty(mumbers);
+ }
+
+ ///
+ /// 排它性参数Exclude设置 测试
+ ///
+ [Fact]
+ public void SortedSetRangeByValue_Exclude_Test()
+ {
+ SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
+ {
+ new SortedSetEntry("first",0),
+ new SortedSetEntry("second",0),
+ new SortedSetEntry("third",0),
+ new SortedSetEntry("four",0),
+ new SortedSetEntry("five",0),
+ };
+ redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
+
+ //默认:Exclude.None [Start,Stop]
+ var members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "first", "second", Exclude.None);
+ //firt five four second
+ Assert.Equal(4, members.Length);
+
+ //Exclude.Start (Start,Stop]
+ members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "first", "second", Exclude.Start);
+ //five four second
+ Assert.Equal(3, members.Length);
+
+ //Exclude.Stop [Start,Stop)
+ members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "first", "four", Exclude.Stop);
+ Assert.Equal(2, members.Length);
+
+ //Exclude.Both (Start,Stop)
+ members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "first", "four", Exclude.Both);
+ Assert.Single(members);
+ }
+
+ ///
+ /// 分数相同,字典排序,逐字符比较(汉字的比较等待确认)
+ /// 字典顺序(”0”<…<”9”<”A”<…<”Z”<”a”<…<”z”)
+ ///
+ [Fact]
+ public void SortedSetRangeByValueTest()
+ {
+ SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
+ {
+ new SortedSetEntry("Andy",0),
+ new SortedSetEntry("and",0),
+ new SortedSetEntry("And",0),
+ new SortedSetEntry("Banana",0),
+ new SortedSetEntry("color",0),
+ new SortedSetEntry("query",0),
+ new SortedSetEntry("remove",0),
+ new SortedSetEntry("101",0),
+ new SortedSetEntry("304",0),
+ new SortedSetEntry("404",0),
+ new SortedSetEntry("王高峰",0),
+ new SortedSetEntry("刘山东",0),
+ };
+ redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
+
+ //数字排序
+ var members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "0", "5");
+ Assert.Contains("101", members);
+ Assert.Contains("304", members);
+ Assert.Contains("404", members);
+
+ members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "10", "4");
+ Assert.Contains("101", members);
+ Assert.Contains("304", members);
+
+ members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "11", "40");
+ Assert.Contains("304", members);
+
+ //字母排序
+ members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "And", "color");
+ //And Andy Banana and color
+ Assert.Contains("And", members);
+ Assert.Contains("Andy", members);
+ Assert.Contains("Banana", members);
+ Assert.Contains("and", members);
+ Assert.Contains("color", members);
+
+ members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "A", "color");
+ //And Andy Banana and color
+ Assert.Contains("And", members);
+ Assert.Contains("Andy", members);
+ Assert.Contains("Banana", members);
+ Assert.Contains("and", members);
+ Assert.Contains("color", members);
+
+ members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "A", "B");
+ //And Andy 不包括Banana,因为Ba排在B后
+ Assert.Contains("And", members);
+ Assert.Contains("Andy", members);
+
+ members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "A", "Bb");
+ //And Andy Banana
+ Assert.Contains("And", members);
+ Assert.Contains("Andy", members);
+ Assert.Contains("Banana", members);
+
+ //TODO:汉字排序规则不清楚
+ members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "王", "赵");
+ //王高峰
+ Assert.Contains("王高峰", members);
+ }
+
+ ///
+ /// 分页测试
+ ///
+ [Fact]
+ public void SortedSetRangeByValue_Page_Test()
+ {
+ SortedSetEntry[] sortedSetEntries = new SortedSetEntry[]
+ {
+ new SortedSetEntry("Andy",0),
+ new SortedSetEntry("and",0),
+ new SortedSetEntry("And",0),
+ new SortedSetEntry("Banana",0),
+ new SortedSetEntry("color",0),
+ new SortedSetEntry("query",0),
+ new SortedSetEntry("remove",0),
+ new SortedSetEntry("101",0),
+ new SortedSetEntry("304",0),
+ new SortedSetEntry("404",0),
+ new SortedSetEntry("王高峰",0),
+ new SortedSetEntry("刘山东",0),
+ };
+ redisSortedSetStudy.SortedSetAdd(defaultRedisKey, sortedSetEntries);
+
+ //第一页
+ var members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "101", "remove", Exclude.None, 0, 4, CommandFlags.None);
+ Assert.Equal(4, members.Length);
+ Assert.Contains("101", members);
+ Assert.Contains("304", members);
+ Assert.Contains("404", members);
+ Assert.Contains("And", members);
+
+ //第2页
+ members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "101", "remove", Exclude.None, 4, 4, CommandFlags.None);
+ Assert.Equal(4, members.Length);
+ Assert.Contains("Andy", members);
+ Assert.Contains("Banana", members);
+ Assert.Contains("and", members);
+ Assert.Contains("color", members);
+
+ //第3页
+ members = redisSortedSetStudy.SortedSetRangeByValue(defaultRedisKey, "101", "remove", Exclude.None, 8, 4, CommandFlags.None);
+ Assert.Equal(2, members.Length);
+ Assert.Contains("query", members);
+ Assert.Contains("remove", members);
+ }
+ #endregion
+
+
+
#region 清理
public void Dispose()
{