https://blog.csdn.net/github_26672553/article/details/82014804
用redis的订阅/发布功能来做的好处是
如果我们是多个服务器节点,每个节点都订阅,这样只要向频道发送命令,每个节点都会执行。
redis 2.8之后有一个功能叫做 Keyspace通知
https://redis.io/topics/notifications
触发某些事件后可以向指定的频道发送通知。
K 键空间通知,所有通知以 __keyspace@<db>__ 为前缀,针对key
E 键事件通知,所有通知以 __keyevent@<db>__ 为前缀,针对event
g DEL, EXPIRE, RENAME等类型无关的t通用命令的通知
$ 字符串命令的通知
l 列表命令的通知
s 集合命令的通知
h 哈希命令的通知
z 有序集合命令的通知
x 过期事件:每当有过期键被删除时发送
e 驱逐(Evict)事件:每当有键因为maxmemory政策而被删除时发送
A 参数g$lshzxe的别名,相当于All
默认情况下,禁用keyspace事件通知。
使用redis的notify-keyspace-events启用通知。
vi redis.conf
notify-keyspace-events EX
基础知识
为了分区数据,redis支持数据库(db)的切换。默认连接的是0.
配置文件中有databases属性可以设置数量,默认是16
1、通过 select x 来进行切换(注意是从0开始的)
2、flushall 则清空所有db的数据;flushdb是清空当前db的数据
回到正题
都统一对 db0进行操作
#一个客户端订阅 过期事件
subscribe __keyevent@0__:expired
#另外一个客户端
setex name 10 jack
10秒过后,过期,订阅端就会收到消息。