events - EXPIRE 键 0 未通知 Redis 订阅者

标签 events redis

我有一个 Redis 客户端订阅了 __keyevent@0__:expired 通知。它完美地工作,无论是当 key 本身过期(达到 ttl)还是当我手动使它们过期且秒数大于 0 时,如下所示:

EXPIRE myKey 1

订阅者看到 expired 事件,因此可以采取一些行动。

但是,如果我想手动删除 key 通知订阅者,我使用EXPIRE,秒数为0 :

EXPIRE myKey 0

key 被删除,但订阅者没有收到任何东西。

我在文档中看不到任何与此相关的内容。谁能解释这种行为?

最佳答案

查看源代码 (expire.c, ~252),设置 <=0 的过期值(或使用过去时间的 EXPIREAT)会导致删除 key 而不是过期(相应地DEL 通知而不是 EXPIRED 事件)。

这种行为确实没有记录在案,如果你能提交一个 PR 来修复这个问题到文档库(https://github.com/antirez/redis-doc),那就太好了。

关于events - EXPIRE 键 0 未通知 Redis 订阅者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40636291/

相关文章:

ruby-on-rails - ruby rails : Observe model changes from controller action

javascript - 冒泡由禁用元素触发的事件

java - 使用绝地管道获取值(value)

redis - 通过 Sentinel 将 Celery 连接到 Redis

c# - 程序可以响应另一个应用程序中的事件吗

wpf - 如何判断默认文本框上下文菜单何时打开或关闭?

azure - 如何为 CacheManager 选择 Azure 中的 Redis databaseId?

google-cloud-platform - Cloud Memorystore Redis 高 CPU 使用率

Redis 上的 Spring session - Redis 宕机时的故障转移是什么

javascript - 在回发中使用 __EVENTARGUMENT