https://cloud.tencent.com/developer/article/1347437 python中的Redis键空间通知(过期回调)
set notify-keyspace-events KEA 【KEA参照以下字符进行设置】
此有缺点:最大的缺点是Pub / Sub实现要求发布者和订阅者一直处于启动状态。订阅服务器在停止或连接丢失时会丢失数据。
【意思:就是如果服务端在意外情况下出现重启或断开,需要重新设置(windows)】
| 字符 | 发送通知 |
|---|---|
| K | 键空间通知,所有通知以 keyspace@ 为前缀,针对Key |
| E | 键事件通知,所有通知以 keyevent@ 为前缀,针对event |
| g | DEL 、 EXPIRE 、 RENAME 等类型无关的通用命令的通知 |
| $ | 字符串命令的通知 |
| l | 列表命令的通知 |
| s | 集合命令的通知 |
| h | 哈希命令的通知 |
| z | 有序集合命令的通知 |
| x | 过期事件:每当有过期键被删除时发送 |
| e | 驱逐(evict)事件:每当有键因为 maxmemory 政策而被删除时发送 |
| A | 参数 g$lshzxe 的别名,相当于是All |
import time from redis import StrictRedis redis = StrictRedis(host='localhost', port=6379) pubsub = redis.pubsub() def event_handler(msg): print(msg) data = msg['channel'].decode().split(':')[1] print('***',data, redis.get(data)) pubsub.psubscribe(**{'__keyspace@0__:*': event_handler}) print('Starting message loop') while True: message = pubsub.get_message() if message: print(message) else: time.sleep(0.01)