Redis 集群:hgetall 会在集群中的所有节点中搜索密钥吗?



默认情况下,AWS 弹性缓存会创建一个 redis 集群。

我使用 nodejs 并使用 ioredis。

我的问题是,如果我调用 hgetall,它会自动查询集群中的所有节点吗? 还是我还需要做其他事情?

不需要查询所有节点。使用 Redis.Cluster 连接到群集,它会将命令发送到正确的节点。

一个体面的 Redis 集群客户端库应该实现 MOVED 和 ASK 重定向。客户端库的最终用户不应担心密钥的位置。

更新:我认为我在这里说的不正确,请参阅另一个答案。对于像HGETALL这样的命令,客户端库知道将其发送到何处。

从文档中,强调我的:

每个命令将只发送到一个节点。对于包含键的命令,(例如...HGETALL(,ioredis将它们发送到提供密钥的节点,对于不包含密钥的其他命令(例如INFO,KEYS和FLUSHDB(,ioredis将它们发送到随机节点。


不,不是自动的。您需要自行将hgetall发送到群集中的每个节点。有一个nodes()实用程序函数返回节点数组来促进这一点。

文档明确回答了这个问题,并提供了一个示例,请参阅 https://github.com/luin/ioredis#running-commands-to-multiple-nodes。

最新更新