一、使用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'}