【问题标题】:Getting multiple hashes from redis using StackExchange.Redis使用 StackExchange.Redis 从 redis 获取多个哈希
【发布时间】:2015-03-17 12:45:56
【问题描述】:

我需要从 redis 服务器获取大约 10k 的哈希值。由于没有命令可以在 redis 中获取多个哈希值,因此我使用 db.HashGetAllAsync() 调用遍历所有键,然后等待所有任务完成。尽管它有效,但在这些调用期间,我在 RedisLabs 仪表板上看到了显着的延迟峰值。

有什么方法可以同时获取多个哈希值?也许有任何ConnectionMultiplexer 设置在这种情况下可能会有所帮助?

【问题讨论】:

  • 您是否正在多次调用此调用,然后等待返回所有结果?如果是这样,您正在运行多少个并发连接?

标签: c# redis stackexchange.redis redislabs


【解决方案1】:

没有可变参数hgetall,所以是的:最简单的方法是将大量的个人hgetall 流水线化。您可以甚至可能做的唯一另一件事是使用 Lua 脚本 (eval/evalsha) 在每个项目中生成多个项目,但我看不出这会如何减少服务器负载或带宽,因此似乎不值得尝试!

无论如何,是的:这将在服务器上产生一些工作。

【讨论】:

  • 我想在我试图获得 10k 哈希的情况下使用 Lua 脚本会使其他 redis 调用排队并进一步增加延迟。
  • @pauliusnrk 是的,我也这么认为; IMO,您的最好的选择是从从属设备读取批量散列
猜你喜欢
  • 2016-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-02
  • 2016-07-22
  • 2013-06-17
  • 2013-05-17
  • 2018-09-10
相关资源
最近更新 更多