默认情况下,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。