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

时间:2018-06-20 11:02:36

标签: node.js redis redis-cluster

AWS Elasticache默认情况下会创建Redis集群。

我正在使用nodejs和ioredis。

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

2 个答案:

答案 0 :(得分:1)

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

一个不错的Redis Cluster客户端库应该实现MOVED and ASK Redirection。客户端库的最终用户不必担心密钥的位置。

答案 1 :(得分:0)

更新:我认为我在这里所说的不正确,请参见other answer。对于HGETALL之类的命令,客户端库知道将其发送到何处。

在文档中,重点是我的

  

每条命令将被精确发送到一个节点。 对于包含键的命令(例如... HGETALL),ioredis将其发送到[sic]提供键的节点,对于其他不包含键的命令(例如INFO,KEYS和FLUSHDB) ,ioredis将它们发送到随机节点。


否,不是自动的。您需要自己向集群中的每个节点发送hgetall。有一个nodes()实用程序函数返回节点数组以方便此操作。

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