python--杂识--8--redis超时过期通知
redis超时过期通知python代码实现
·
1、使用redis key 过期通知,需开启key过期通知功能:
登录进入redis-cli 客户端,执行:
config set notify-keyspace-events Ex
【或者启动redis前在redis.conf 添加配置:notify-keyspace-events Ex
//过期时间监听生效】
2、启动监听key过期
登录进入redis-cli 客户端,执行:( 订阅一个或者多个符合pattern格式的频道)
PSUBSCRIBE __keyevent@*__:expired
然后该客户端处于监听状态,如果有key过期,则列出
Redis中发布与订阅只有简单的6个命令。即:
订阅一个或者多个符合pattern格式的频道
PSUBSCRIBE pattern [pattern ...]
发布消息到chanel中
PUBLISH channel message
查看订阅与发布系统状态
PUBSUB subcommand [argument [argument ...]]
退订所有符合格式的频道
PUNSUBSCRIBE [pattern [pattern ...]]
订阅一个或者多个频道
SUBSCRIBE channel [channel ...]
取消订阅频道
UNSUBSCRIBE [channel [channel ...]]
--------------------
测试:
3、另外开启一个客户端,添加test 为key,并设置5秒过期
setex test 5 test
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'}
更多推荐
已为社区贡献2条内容
所有评论(0)