前言
使用redis进行大数据量信息存储时,如存储百万级别设备/通道信息,如果我们想获取设备/通道是否失效,常规的方法是定时获取,但是这样对于应用来说太消耗性能。
redis提供了一种key事件监听的机制,应用可以监听key失效事件,当key失效时,redis会将key失效事件回调通知。
修改
1)修改redis.conf
配置
bash
# 修改前
# notify-keyspace-events
# 修改后
notify-keyspace-events Ex
# 屏蔽
# notify-keyspace-events ""
重启redis
bash
systemctl restart redis
# 如果修改云redis参数无需重启
示例
1)打开redis-cli
,启动监听(示例包含监听到的事件)
bash
[root@localhost redis]# redis-cli -p 6379
127.0.0.1:6379> PSUBSCRIBE channel __keyevent@*__:expired
Reading messages... (press Ctrl-C to quit)
1) "psubscribe"
2) "channel"
3) (integer) 1
1) "psubscribe"
2) "__keyevent@*__:expired"
3) (integer) 2
# 2s后收到key为"name"过期失效的消息
1) "pmessage"
2) "__keyevent@*__:expired"
3) "__keyevent@0__:expired"
4) "name"
2)启动另一个redis-cli,设置一个有效期为2s的key
bash
[root@localhost ~]# redis-cli -p 6379
# 设置name的有效期为2s,value为1
127.0.0.1:6379> SETEX name 2 1
OK
127.0.0.1:6379>