【问题标题】:Redis command batch on a Redis ClusterRedis 集群上的 Redis 命令批处理
【发布时间】:2020-06-12 14:33:53
【问题描述】:

我们正在使用 StackExchange.Redis 访问常规 Redis 数据库。现在我们想将该数据库设置为一个集群,因此我们正在审查代码以确保没有MULTI 或 Lua 脚本可能会因为跨节点的密钥分布而中断。

没有 Lua 脚本或 MULTI,但有很多 redis.GetDatabase().CreateBatch()。据我所知,批处理只是将命令通过管道发送到 Redis,但这是否适用于 Redis Cluster?

在阅读了一些文档之后,我会说批处理中的每个命令都将被单独处理,如果节点将客户端重定向到另一个节点以执行该特定命令,它将由库本身处理。事实上,批处理中的每个命令都有自己的任务返回,所以应该没问题。然而,互联网上有些人声称相反:https://groups.google.com/forum/#!topic/redis-db/1wc9tJSprms

那么我可以期望批处理在 Redis 集群中正常工作吗?

【问题讨论】:

    标签: redis stackexchange.redis redis-cluster


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-01-12
      • 1970-01-01
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 2015-02-22
      • 2019-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多