C# stackexchange redis hashscan一次返回所有字段
我正在C#中使用stackexchange.redis SDK,希望扫描我的哈希集。 我希望SDK作为redis客户端执行(当我执行“hscan myKey 0”时,它将返回几个键值对,并返回一个游标,我将用于下一次扫描)。但当我使用stackexchange.redis SDK实现“hashscan”方法时,如下所示:C# stackexchange redis hashscan一次返回所有字段,c#,redis,stackexchange.redis,C#,Redis,Stackexchange.redis,我正在C#中使用stackexchange.redis SDK,希望扫描我的哈希集。 我希望SDK作为redis客户端执行(当我执行“hscan myKey 0”时,它将返回几个键值对,并返回一个游标,我将用于下一次扫描)。但当我使用stackexchange.redis SDK实现“hashscan”方法时,如下所示: redisCache.HashScan(myKey, pageSize:10, cursor: 0) 它将返回“myKey”中的所有字段,其中有2000个键值对。 我怎么能让
redisCache.HashScan(myKey, pageSize:10, cursor: 0)
它将返回“myKey”中的所有字段,其中有2000个键值对。
我怎么能让它一次只返回几个结果呢
因为在未来,“我的钥匙”中会有数百万个字段,如果它们都一次性返回,会消耗大量内存,还会阻止在线服务吗?因为redis是单线程应用程序
谢谢 它并不像你想象的那样。这里的
HashScan
方法返回一个自定义迭代器,该迭代器最多保存2页数据;当您接近一页的末尾时,它会自动获取下一页。基本上,如果你只想读20个项目,只要读20个项目就行了。例如,LINQs.Take(20)
可以正常工作。如果您在迭代器上调用.ToList()
,则是:它将从一端走到另一端,根据需要动态获取数据。所以:不要这样做:)
它做不到的事情:
- 在一次对redis的巨大调用中获取所有数据
- 在从
方法返回之前,执行大量对redis的小调用HashScan