C# 如何使用带有stackexchange.redis库的ZSCAN命令通过光标和分页获得结果?

C# 如何使用带有stackexchange.redis库的ZSCAN命令通过光标和分页获得结果?,c#,redis,paging,stackexchange.redis,C#,Redis,Paging,Stackexchange.redis,我正在使用stackexchange.redis。 在这种情况下,zscan将给出所有匹配的值 我希望得到精确给定的页面大小结果和剩余值的下一个光标。 using (ConnectionMultiplexer conn = ConnectionMultiplexer.Connect(conf)) { var dbs = conn.GetDatabase(); int currentpage = 0,

我正在使用
stackexchange.redis
。 在这种情况下,
zscan
将给出所有匹配的值
我希望得到精确给定的页面大小结果和剩余值的下一个光标。

 using (ConnectionMultiplexer conn = ConnectionMultiplexer.Connect(conf))
 {
           var dbs = conn.GetDatabase();                         
           int currentpage = 0,pagesize=20;
           var scanresult = dbs.SortedSetScan("key", "an*", pagesize, 0, 0, CommandFlags.None);
 }
我调试了它的源代码库,发现它们是 扫描整个源值,直到光标变为零,并提供所有 匹配的值

所以,我们可以按照与redis命令Zscan相同的游标得到结果

这是我的代码快照

 using (ConnectionMultiplexer conn = ConnectionMultiplexer.Connect(conf))
 {
           var dbs = conn.GetDatabase();                         
           int currentpage = 0,pagesize=20;
           var scanresult = dbs.SortedSetScan("key", "an*", pagesize, 0, 0, CommandFlags.None);
 }
这里我得到的是匹配条件的所有值,而不是页面大小和下一个光标


因此,如果之前有人这样做过,请提供帮助,这是因为stack stackexchange.redis库代码。其扫描按照可枚举方法进行。所以它的工作原理与redis命令行不同

为了解决这个问题,我们使用了另一个名为csredis

using (var redis = new RedisClient("yourhost"))
{
    string ping = redis.Ping();
     var scanresult=redis.ZScan(key, cursor, pattern, pagesize);

}

如上面代码所示,我们将把所有数据都输入“scanresult”。

为什么不使用ZRANGEBYLEX?结果将是相同的,您可以对其进行更多的控制。我们不想玩分数游戏,我们需要对游标执行纯“zscan”操作。如果您想玩游标,您可以通过
var cursor=(IScanningCursor)scanresult获得它这是因为它们的内部代码结构,所以它现在可以与其他库一起使用。这对我来说也适用。谢谢