【问题标题】:Redis Key expire notification with Jedis not workingRedis Key 过期通知 Jedis 不工作
【发布时间】:2017-05-04 22:02:02
【问题描述】:

我使用的是 Jedis 2.9.0 版本,我关注了

Redis Key expire notification with Jedis

但是当redis key过期时不会调用Listener中的onPMessage方法。

在我使用的订阅者中

    jedis.psubscribe(new KeyExpiredListener(), "*");

当我运行服务器时

    jedis.set("notify", "test");
    jedis.expire("notify", 10);

但是10秒后Redis key过期了但是onPMessage没有触发。

【问题讨论】:

  • 您是否尝试将* 替换为特定的键空间通道?喜欢"__key*__:*

标签: java redis jedis


【解决方案1】:

Expire keyspace 通知不会仅在密钥过期时触发,而是(取自the docs):

  • 当密钥被命令访问并发现已过期时。
  • 通过后台系统在后台以增量方式查找过期密钥,以便还能够收集从未过期的密钥 访问。

另外,可能你还没有启用键空间通知:

默认情况下,键空间事件通知被禁用,因为当 不是很明智,该功能使用了一些 CPU 能力。通知是 使用 redis.conf 的 notify-keyspace-events 或通过 配置集。

一些docs page 会向您解释如何启用它们。

【讨论】:

  • 感谢 Matías Fidemraizer。我刚刚为 notify-keyspace-events 添加了 $AKE,它就像一个魅力。
  • @GouravSoni 不客气!我很高兴你能解决你的问题! :)
猜你喜欢
  • 2014-12-11
  • 1970-01-01
  • 2020-04-19
  • 2013-01-10
  • 2023-03-10
  • 2021-05-02
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
相关资源
最近更新 更多