首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Redis密钥空间通知到期未触发

Redis密钥空间通知到期未触发
EN

Stack Overflow用户
提问于 2018-07-26 03:22:25
回答 2查看 3.1K关注 0票数 2

我正在看这个页面:https://redis.io/topics/notifications

我在配置文件中设置了以下行:

代码语言:javascript
运行
复制
notify-keyspace-events "Kx"

当我这样做时(然后运行我的应用程序,它最终会使一些密钥过期),我看不到任何事件:

代码语言:javascript
运行
复制
redis-cli --csv psubscribe '__keyspace*__:*expire*'

但是,当我将我的配置设置为:

代码语言:javascript
运行
复制
notify-keyspace-events "Kg"

然后运行相同的app和redis-cli命令,我确实看到了事件:

代码语言:javascript
运行
复制
"pmessage","__keyspace*__:*expire*","__keyspace@0__:spring:session:wca:sessions:expires:9d73fefc-459d-4bf4-83ef-b8fcbf06b997","expire"
"pmessage","__keyspace*__:*expire*","__keyspace@0__:spring:session:wca:sessions:expires:9d73fefc-459d-4bf4-83ef-b8fcbf06b997","expire"
"pmessage","__keyspace*__:*expire*","__keyspace@0__:spring:session:idp:sessions:expires:52dbe449-4616-41ef-bfa6-1d7a16a89f8a","expire"
"pmessage","__keyspace*__:*expire*","__keyspace@0__:spring:session:idp:sessions:expires:52dbe449-4616-41ef-bfa6-1d7a16a89f8a","expire"
"pmessage","__keyspace*__:*expire*","__keyspace@0__:spring:session:idp:sessions:expires:52dbe449-4616-41ef-bfa6-1d7a16a89f8a","expire"
"pmessage","__keyspace*__:*expire*","__keyspace@0__:spring:session:idp:sessions:expires:52dbe449-4616-41ef-bfa6-1d7a16a89f8a","expire"

我知道过期并不一定发生在TTL过期之后。但我不确定这是否能解释我所看到的情况--我的redis-cli只查找"expire“事件,并且在我通知泛型命令时(且仅当我通知泛型命令时),它才会始终看到这些事件。对于我的应用程序来说,这太夸张了;我只想看到过期。

任何帮助都是非常感谢的。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2018-07-26 15:59:14

您订阅了错误的频道。

有两种通知:

  • Key-space通知通道:通道为__keyspace@<db>__:<key>
  • Key-event通知:通道为__keyevent@<db>__:<event>

如果您想获得所有过期的密钥通知,您有两个选择:

使用键空间通知

通道启用密钥空间通知:config set notify-keyspace-events Kx

  • subscribe to
  1. psubscribe __keyspace@*__:*

使用按键事件通知

启用按键事件通知:config set notify-keyspace-events Ex

  • subscribe to
  1. psubscribe __keyevent@*__:expired
票数 8
EN

Stack Overflow用户

发布于 2020-08-11 21:38:42

您需要订阅"__keyevent@0__:expired“而不是"__keyevent@0__:expire

代码语言:javascript
运行
复制
127.0.0.1:6379> subscribe __keyevent@0__:expired
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "__keyevent@0__:expired"
3) (integer) 1

1) "message"
2) "__keyevent@0__:expired"
3) "mykey"

请参阅此文档。我也面临着同样的问题。我尝试了这个链接的解决方案,它在https://github.com/redis/redis/issues/1855中起作用

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51526243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档