python獲取redis key過期的信息


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM