1.修改配置文件
#1. 注释如下内容
#notify-keyspace-events ""
#2. 取消注释如下内容共
notify-keyspace-events Ex
然后重启redis
2. python示例代码
2.1 消息订阅
import time
import redis
from config import config
redis_conn=redis.StrictRedis.from_url(config.REDIS_CACHE_URI)
pubsub=redis_conn.pubsub()
pubsub.subscribe(f'__keyevent@{config.REDIS_CACHE_DB}__:expired')#注意@后面跟的是数据库名
# pubsub.psubscribe(**{'__keyspace@0__:*': event_handler})
while True:
message = pubsub.get_message()
if message:
print("[REDIS-EVENT]:",message)
else:
time.sleep(0.01)
2.2 消息发布
import redis
from config import config
conn=redis.StrictRedis.from_url(config.REDIS_CACHE_URI)
conn.set("tst1","test1",ex=1)
订阅输出结果:
[REDIS-EVENT]: {'type': 'subscribe', 'pattern': None, 'channel': b'__keyevent@9__:expired', 'data': 1}
[REDIS-EVENT]: {'type': 'message', 'pattern': None, 'channel': b'__keyevent@9__:expired', 'data': b'tst1'}
输出的第一行内容是订阅的客户端自身发出的,data中的值就是key。
另外注意过期事件只能获取到key,key中的值是不返回的。