【问题标题】:How can I see which keys have been missed?如何查看遗漏了哪些键?
【发布时间】:2021-10-09 01:44:36
【问题描述】:

我在我们的 Redis 实例上看到很多缓存未命中,我假设这是由于编程错误导致查找的键从未存储过。

我可以运行 MONITOR 来实时查看所有命令,但这无法执行,而且似乎也无法指示按键是否被击中。

Redis 本身是否提供任何方法来查看丢失了哪些键?

【问题讨论】:

    标签: redis


    【解决方案1】:

    Redis info 命令在其各种统计信息中包含keyspace_hitskeyspace_misseskeyspace_misses 会在你每次请求读取 Redis 没有的键时递增。

    如果您需要更详细的信息,我建议您修改缓存获取逻辑,将丢失的键写入 Redis 排序集或列表,以便您查看丢失的键。您还必须想出一种定期清除这些数据的方法,以免它失控,除非您的总密钥空间非常有限。

    【讨论】:

      【解决方案2】:

      从 Redis 6.0 开始,这成为可能。添加了新键“m”:

      m 键未命中事件(访问不存在的键时生成的事件)

      例如,您可以使用 'redis-cli' 在控制台中查看丢失的键:

      user@redis-server:~# redis-cli config set notify-keyspace-events Km
      OK
      user@redis-server:~# redis-cli --csv psubscribe '__key*__:*'
      Reading messages... (press Ctrl-C to quit)
      "psubscribe","__key*__:*",1
      "pmessage","__key*__:*","__keyevent@0__:keymiss","<< actual data >>"
      ......
      

      来源:https://redis.io/topics/notifications

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-06-29
        • 1970-01-01
        • 1970-01-01
        • 2013-07-12
        • 1970-01-01
        • 2015-07-11
        • 1970-01-01
        相关资源
        最近更新 更多