使用StackExchange.Redis从Redis中获取多个哈希值

3
我需要从Redis服务器获取大约10k个哈希值。由于Redis没有获取多个哈希值的命令,因此我使用db.HashGetAllAsync()调用迭代所有密钥,然后等待所有任务完成。尽管它可以正常工作,但我看到在这些调用期间RedisLabs面板上出现了显著的延迟峰值。

有没有办法同时获取多个哈希值?也许有任何ConnectionMultiplexer设置可以在这种情况下提供帮助吗?


你是否正在运行多个此调用的实例,然后等待所有结果返回?如果是这样,你运行了多少并发连接? - The Real Bill
1个回答

2

没有可变参数的hgetall,因此,最简单的方法是将大量的单个hgetall进行管道处理。你甚至可以使用Lua脚本(eval/evalsha)在每个项目中生成多个项目,但我无法看出这样做如何减少服务器负载或带宽,所以似乎不值得尝试!

无论哪种方式,都会在服务器上产生一些工作。


我猜在获取10k个哈希值的情况下使用Lua脚本会将其他Redis调用放入队列中,进一步增加延迟。 - pauliusnrk
2
@pauliusnrk 是的,我也这么猜;在我看来,你最好的选择是从一个从节点进行批量哈希读取。 - Marc Gravell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接