Redis命令行工具 - KEYS *未显示所有键

4

我正在使用以下命令连接到AWS Redis集群

redis-cli -c -h host.amazonaws.com -p 6379

我从一个SpringBoot应用程序将两个键“X1”和“X2”推送到redis缓存中(API方法没有用@Cacheable注释),现在当我在cli终端上运行KEYS *时,它只会列出“X1”或“X2”,而不是两者都有。但对于这两个键的GET操作都可以正常工作。 info keyspace 返回以下信息:
Keyspace
db0:keys=11,expires=1,avg_ttl=1975400

我在这里错过了什么?
1个回答

5
您可能已经启用了集群模式。在集群模式下,存储的数据是按键进行分区的。其中一个优点是,由于每个分片都有整个数据集的一部分,因此现在可以拥有比一个机器合理容量更大的数据集(如果您愿意,可以达到数百TB)。
缺点是,如果键结束在不同的哈希槽中,则多键命令将不再按您的预期工作。 KEY命令是这样一个多键命令。
简而言之:
- KEYS 明显只在您正在访问的集群节点上提供密钥。最好给您一个错误,但它没有。 - GET 不受影响:redis-cli使用-c标志知道如何找到正确的集群节点(也许在访问错误的节点并被告知键已移动后)。
如果你向集群中的每个主节点询问 KEYS *,并将所有结果相加,就可以得到所有的键。 这个问题中有一些使用redis-cli的示例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接