gpt4 book ai didi

Redis key 空间通知过期未触发

转载 作者:可可西里 更新时间:2023-11-01 11:12:38 30 4
gpt4 key购买 nike

我正在查看此页面:https://redis.io/topics/notifications

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

notify-keyspace-events "Kx"

当我这样做时(然后运行我的应用程序,最终使某些 key 过期),我没有看到任何事件:

redis-cli --csv psubscribe '__keyspace*__:*expire*'

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

notify-keyspace-events "Kg"

然后运行相同的应用程序和 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"

我知道过期不一定会在 TTL 过去后立即发生。但我不确定这是否解释了我所看到的——我的 redis-cli 只查找“过期”事件,并且当(且仅当)我通知通用命令时它始终看到它们。这对我的应用来说太啰嗦了;我只想查看过期时间。

感谢任何帮助。谢谢!

最佳答案

您订阅了错误的 channel 。

有两种通知:

  • 键空间通知: channel 是__keyspace@<db>__:<key>
  • 按键事件通知: channel 是__keyevent@<db>__:<event>

如果你想得到所有过期的 key 通知,你有两种选择:

使用键空间通知

  1. 启用键空间通知:config set notify-keyspace-events Kx

  2. 订阅 channel :psubscribe __keyspace@*__:*

使用按键事件通知

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

  2. 订阅 channel :psubscribe __keyevent@*__:expired

关于Redis key 空间通知过期未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51526243/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com