redis集群上的redis命令批处理

w8biq8rn  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(575)

我们正在使用stackexchange.redis访问常规redis数据库。现在我们要将该数据库设置为一个集群,所以我们要检查代码以确保没有 MULTI 或者lua脚本可能会中断,因为密钥分布在节点之间。
没有lua脚本或 MULTI 但是有很多 redis.GetDatabase().CreateBatch() . 据我所知,批处理只是将命令通过管道发送到redis,但这对redis cluster有效吗?
在阅读了一些文档之后,我想说批处理中的每个命令都将分别处理,如果节点将客户机重定向到该特定命令的另一个节点,那么它将由库本身处理。事实上,批处理中的每个命令都返回了自己的任务,因此应该可以。然而,互联网上有一些人却声称相反:https://groups.google.com/forum/#!主题/redis db/1wc9tjsprms
那么我能期望批处理在redis集群中正常工作吗?

nle07wnf

nle07wnf1#

应该有用。在内部, RedisBatch.Execute 将排队的命令拆分为每个目标组(保持每个组的原始顺序),然后分别刷新每个组;因此,它确实考虑了这个场景,并尝试尽可能地将事情保持在一起,以避免数据包碎片和交叉消息等。如果所涉及的密钥意味着这最终会与3个不同的服务器进行通信,那么就这样吧。它将涉及更多的数据包,如果你只与一个服务器,但然后。。。你还需要3个服务器CPU来处理这项工作,所以。。。正反两面。但从根本上说:是的,它应该起作用。

相关问题