redis 上的 keys 命令行为与 aws 上的 redis 集群

keys command behavior on redis vs redis cluster on aws

Redis 有点新手...

我注意到 redis 上有一个奇怪的行为.. 当我 运行 在本地使用 redis 并使用命令 'keys *' - 我 get\see 系统中的所有密钥 - 根据文档,这没问题。

当我在 aws 上以 Elasticache\cluster 模式 运行 redis 并使用命令 'keys *' - 我只得到 '1) "ElastiCacheMasterReplicationTimestamp"' 在所有 3 个红色服务器上。 我试过其他命令来查找丢失的信息,但无济于事。 我们的 app\server 似乎运行正常,所以有些东西工作正常,但什么地方? 我已阅读文档,但找不到任何内容。

谁能解释一下? 非常感谢。

Redis 集群不支持 KEYS 命令。您只能向单个 Redis 实例发送 KEYS 命令。

在生产环境中使用KEYS命令不是一个好主意,尤其是当你在Redis中有太多键时(它会长时间阻塞Redis)。

如果你非要获取你的Redis Cluster中的所有key,你就得自己实现,还有an example

我建议确认应用程序的配置以确保它指向 ElasticCache 设置。 Redis 集群和 ElasticCache 是不同的东西。因此,它是否支持 keys 命令是无关紧要的。如果 ElasticCache 不支持 keys 命令,作为 Redis 兼容服务器,它会 return 一个错误,而不是一个不完整的键列表。

如果您的密钥设置了过期时间,您可能没有看到它们,因为那时它们已过期。但也有可能它正在与不同的服务器对话,甚至只是吞下错误。我们没有办法做到这一点。

但是,您可以使用 info 命令及其子命令(例如 info commandstats)来确保命令确实在其上 运行。如果您没有看到您的应用程序使用的列出的命令,则您的应用程序没有与其对话。