一、使用redis key 过时通知,需开启key过时通知功能:python
登陆进入redis-cli 客户端,执行:redis
config set notify-keyspace-events Ex
【或者启动redis前在redis.conf 添加配置:notify-keyspace-events "Ex" //过时时间监听生效】oop
二、启动监听key过时测试
登陆进入redis-cli 客户端,执行:( 订阅一个或者多个符合pattern格式的频道)spa
PSUBSCRIBE __keyevent@*__:expired
而后该客户端处于监听状态,若是有key过时,则列出code
Redis中发布与订阅只有简单的6个命令。即:对象
订阅一个或者多个符合pattern格式的频道 PSUBSCRIBE pattern [pattern ...] 发布消息到chanel中 PUBLISH channel message 查看订阅与发布系统状态 PUBSUB subcommand [argument [argument ...]] 退订全部符合格式的频道 PUNSUBSCRIBE [pattern [pattern ...]] 订阅一个或者多个频道 SUBSCRIBE channel [channel ...] 取消订阅频道 UNSUBSCRIBE [channel [channel ...]] --------------------
测试:blog
三、另外开启一个客户端,添加test 为key,并设置5秒过时事件
setex test 5 testevent
5秒后,监听窗口显示:
pmessage
__keyevent@*__:expired
__keyevent@0__:expired
test
4.接下来上python代码
#-*- coding:utf-8 -*- import time from redis import StrictRedis #建立redis链接 redis = StrictRedis(host='localhost', port=6379) #建立一个pubsub对象,该对象订阅一个频道并侦听新消息 pubsub = redis.pubsub() #pubsub.psubscribe('__keyspace@0__:*') # 发布监听key失效的订阅 pubsub.psubscribe("__keyevent@0__:expired") #经过无限循环等待事件 print('Starting message loop') for data in pubsub.listen(): print(data)
此时咱们运行python代码,而后开一个redis-cli,搞一个keysvalue
setex keys 5 value
5秒之后keys会过时
python会打印 {'type': 'pmessage', 'pattern': b'__keyevent@0__:expired', 'channel': b'__keyevent@0__:expired' 'data': b'keys'}