我在看这个页面:https : //redis.io/topics/notifications
我的配置文件中设置了以下行:
notify-keyspace-events "Kx"
Run Code Online (Sandbox Code Playgroud)
当我这样做(然后运行最终使某些密钥过期的应用程序)时,我看不到任何事件:
redis-cli --csv psubscribe '__keyspace*__:*expire*'
Run Code Online (Sandbox Code Playgroud)
但是,当我将配置设置为:
notify-keyspace-events "Kg"
Run Code Online (Sandbox Code Playgroud)
然后运行相同的应用程序和 redis-cli 命令,我确实看到了事件:
"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"
Run Code Online (Sandbox Code Playgroud)
我知道当 TTL 已过时,到期不一定会发生。但我不确定这能解释我所看到的——我的 redis-cli 只查找“过期”事件,并且在我通知通用命令时(并且仅当)它始终会看到它们。这对我的应用来说太健谈了;我只想看过期。
任何帮助表示赞赏。谢谢!
您订阅了错误的频道。
有两种通知:
__keyspace@<db>__:<key>__keyevent@<db>__:<event>如果您想获得所有过期密钥通知,您有两种选择:
启用键空间通知: config set notify-keyspace-events Kx
订阅频道: psubscribe __keyspace@*__:*
启用按键事件通知: config set notify-keyspace-events Ex
订阅频道: psubscribe __keyevent@*__:expired
| 归档时间: |
|
| 查看次数: |
2927 次 |
| 最近记录: |