Redis cli-key*未显示所有密钥

6yt4nkrj  于 2022-09-21  发布在  Redis
关注(0)|答案(1)|浏览(266)

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

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

我把两个键“X1”和“X2”从一个SpringBoot应用程序推入到redis缓存中(API方法没有@Cacheable注解),现在当我从cli终端运行KEYS *时,它会列出“X1”或“X2”,但不会同时列出这两个。不过,两个密钥的Get都运行得很好。

info keyspace回车如下;

关键字空间

db0:keys=11,expires=1,avg_ttl=1975400

我错过了什么吗?

d7v8vwbk

d7v8vwbk1#

您可能患有cluster mode enabled。在集群模式下,您存储的数据按键分区。这样做的好处之一是,您现在可以拥有比一台计算机(如果需要,可以达到数百TB)所能容纳的数据集更大的数据集,因为每个分片都包含整个数据集的一小部分。

一个缺点是,如果键在不同的散列槽中结束,则多键命令不再像您预期的那样工作。KEYS命令就是这样的多键命令。

长话短说:

  • KEYS显然只给了您正在访问的集群节点上的密钥。相反,给你一个错误也许会更好,但事实并非如此。
  • GET不受影响:带有-c标志的redis-cli知道如何找到正确的集群节点(可能是在命中错误的节点并被告知密钥为MOVED之后)。

如果向集群中的每个主节点请求KEYS *,并将所有结果加在一起,您应该会得到所有键。This question有一些使用redis-cli执行此操作的示例。

相关问题