Redis专区-Keyspace Event Notification

此通知用于Spring-session-data-redis中,用于监听会话的过期事件和删除事件。在此对官网文档做一次梳理。

可用版本:2.8.0+

Note:如果客户端在某段时间内断开了连接,那么这个时间段内的事件通知将会丢失,即重新连接无法收到相关事件

事件类型

以进行del mykey操作为例

key-space通知

使用key作为channel标识,进行的操作作为消息内容

等价于下面命令


PUBLISH __keyspace@0__:mykey del
key-event通知

使用进行的操作作为channel标识,key作为消息内容

等价于下面命令

PUBLISH __keyevent@0__:del mykey

配置

默认该特性是关闭的,因为该特性会占用一定的CPU资源。要启用该特性可以通过CONFIG SET命令或者配置redis.conf来设置notify-keyspace-events参数,值为下面字符组成的非空字符串:

K Keyspace events, published with keyspace@ prefix.
E Keyevent events, published with keyevent@ prefix.
g Generic commands (non-type specific) like DEL, EXPIRE, RENAME, …
$ String commands
l List commands
s Set commands
h Hash commands
z Sorted set commands
t Stream commands
x Expired events (events generated every time a key expires)
e Evicted events (events generated when a key is evicted for maxmemory)
A Alias for g$lshztxe, so that the “AKE” string means all the events.

示例:配置所有的event

config set notify-keyspace-events KEA

一些常用命令产生的事件

命令事件名称相关key
DELdel已删除的key
RENAMErename_from、rename_to旧key、新key
MOVEmove_from、move_to旧key、新key
EXPIREexpire、expiredexpire-为一个key设置过期时间;expired-一个key因为过期被删除时

更多事件参考:https://redis.io/topics/notifications

expired事件附加说明

expired事件必须在key真正被Redis删除时才会发布,Redis删除key存在两种情况:
1、key的ttl为0,而且客户端访问了该key,Redis会检查过期key并删除;
2、Redis的定时删除策略;

如果key的ttl为0,我们不一定会接收到expired事件,只有在上面两种情况发生时,才会产生expired事件。

参考来源:
https://redis.io/topics/notifications

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子的木木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值