具有正无穷大值的 SortedSetRangeByScoreWithScores 问题

SortedSetRangeByScoreWithScores issue with positive infinity values

当 Redis Sorted Set 具有 +Infinity 分数的项目时,尝试获取其分数 returns 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

这是通过redis-cli的结果:

参考StackExchange.Redis问题#287

我认为问题是 double.PositiveInfinity 字符串值在 Redis 服务器上是 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" 和 运行 更新后的客户端。