【问题标题】:keys command behavior on redis vs redis cluster on awsredis上的keys命令行为与aws上的redis集群
【发布时间】:2017-01-12 02:44:39
【问题描述】:

有点像 redis 的新手...

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

当我在 aws 上以 Elasticache\cluster 模式运行 redis 并使用命令“keys *”时 - 我只得到 '1) "ElastiCacheMasterReplicationTimestamp"' 在所有 3 台 reds 服务器上。 我尝试了其他命令来查找丢失的信息,但无济于事。 我们的应用程序\服务器似乎运行正常,所以有些东西工作正常,但是什么和在哪里? 我已阅读文档,但找不到任何内容。

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

【问题讨论】:

    标签: amazon-web-services redis redis-cli


    【解决方案1】:

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

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

    如果你坚持要在你的 Redis 集群中获取所有的键,你必须自己实现,还有an example

    【讨论】:

    • 感谢您的参考和解释。这很有帮助。干杯!
    • ElasticCache 不是 Redis 集群模式。它是亚马逊提供的“Redis 兼容”服务。返回密钥的事实告诉您它受 ElasticCache 支持,但是运行密钥 j 生产是一个糟糕的主意。
    • @TheRealBill 感谢您指出!我不熟悉 ElasticCache。我以为它拒绝集群模式的KEYS命令,并返回一些自定义信息。
    【解决方案2】:

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

    如果您的密钥设置了过期时间,您可能没有看到它们,因为此时它们已过期。但也有可能它正在与不同的服务器通信,甚至只是吞下错误。我们无从得知这一点。

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

    【讨论】:

      猜你喜欢
      • 2020-06-12
      • 2018-11-22
      • 2016-07-03
      • 1970-01-01
      • 2018-05-03
      • 1970-01-01
      • 2019-10-23
      • 2019-12-01
      • 2021-07-03
      相关资源
      最近更新 更多