gpt4 book ai didi

c# - stackexchange redis hashscan一次性返回所有字段

转载 作者:IT王子 更新时间:2023-10-29 06:01:32 25 4
gpt4 key购买 nike

我在 C# 中使用 stackexchange.redis SDK,并希望扫描我的哈希集。我希望 SDK 作为 redis 客户端执行(当我执行“hscan myKey 0”时,它将返回几个键值对,以及一个我将用于下一次扫描的光标)。但是,当我使用 stackexchange.redis SDK 实现“hashscan”方法时,如下所示:

redisCache.HashScan(myKey, pageSize:10, cursor: 0)

它会返回“myKey”中的所有字段,里面有2000个键值对。我怎样才能让它一次返回几个结果?

Cause 以后“myKey”里有几百万个字段,如果一次全部返回,会很费内存,会不会阻塞在线服务?因为redis是单线程应用。

谢谢!

最佳答案

它并没有像您认为的那样做。 HashScan 方法返回一个自定义迭代器,它最多维护 2 页数据;当您接近一页的末尾时,它会自动获取下一页。那么,从本质上讲,如果您只想阅读 20 篇文章,只需阅读 20 篇文章。例如,LINQs .Take(20) 可以正常工作。如果您在迭代器上调用 .ToList(),那么是的:它将从一端走到另一端,根据需要动态获取数据。所以:不要那样做 :)

做的事情:

  • 在一次巨大的 redis 调用中获取所有数据
  • HashScan 方法返回之前对 redis 执行大量小调用

附带说明:自定义迭代器实现了一个自定义接口(interface),允许您拾取和恢复游标,如果您需要的话

关于c# - stackexchange redis hashscan一次性返回所有字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36469373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com