SortedSetRangeByScoreWithScores具有正无穷大值的问题

时间:2015-10-05 19:22:38

标签: redis stackexchange.redis

当Redis Sorted Set的项目具有+ Infinity分数时,尝试获得其分数将返回double.NaN而不是double.PositiveInfinity

SortedSetRangeByScoreWithScoresSortedSetRangeByRankWithScores方法都会发生这种情况。

注意最后一个断言失败:

var cnn = ConnectionMultiplexer.Connect("...");
var db = cnn.GetDatabase();
db.SortedSetAdd("key", "first", double.NegativeInfinity);
db.SortedSetAdd("key", "last", double.PositiveInfinity);
var result = db.SortedSetRangeByScoreWithScores("key", double.NegativeInfinity, double.PositiveInfinity);
Assert.AreEqual(double.NegativeInfinity, result[0].Score);
Assert.AreEqual(double.PositiveInfinity, result[1].Score);  // <-- This assert fails

Locals

这是redis-cli的结果:

enter image description here

指StackExchange.Redis问题#287

1 个答案:

答案 0 :(得分:1)

我认为问题是Redis服务器上的double.PositiveInfinity字符串值为inf,而客户端上为+inf

请参阅此文件:

  

StackExchange.Redis / StackExchange / Redis的/ Format.cs

68: if (double.IsPositiveInfinity(value)) return "+inf";
147: if(string.Equals("+inf", s, StringComparison.OrdinalIgnoreCase))

尝试将这些字符串设置为"inf"而不是"+inf"并运行更新的客户端。