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'}
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐