背景:目前在**專案,訂單有過期邏輯,小夥伴提議用redis做,經討論分析,redis有key的過期事件,貌似可以實現,但是諮詢大神,好像不建議這樣用,可能會丟資料
隨便寫了段python**測試
1import
redis
23 r = redis.redis(host='
127.0.0.1
', port=6379, db=0, password='
111'
)4 pubsub =r.pubsub()
5 pubsub.subscribe('
__keyevent@0__:expired')
6#pubsub.subscribe('aa')
7for item in
pubsub.listen():
8if item['
type
'] == '
message':
9print(item['
data
'])
事件通過 redis 的訂閱與發布功能(pub/sub)來進行分發,故需要訂閱 __keyevent@0__:expired,其中0表示dbindex
要有事件觸發還需要額外的修改redis配置notify-keyspace-events ex(預設是空白字串)
測試:通過redis客戶端新增key,並指定過期時間,key過期時,即會觸發事件。
redis過期事件監聽
1 redis配置檔案修改 redis.windows.conf與 redis.windows service.conf都要修改 notify keyspace events ex2 新增redis配置檔案,訂閱過期事件訊息 keyevent 1 expired 其中1代表操作redis中的db1,...
redis中key過期事件
剛到新公司乙個月左右,有個新需求,想做定時任務,比如在使用者註冊時間的3天後推送使用者一條訊息。從剛開始腦子裡面閃現的資料庫輪詢,立馬否定掉 浪費資源 再到linux系統的定時任務,但是當使用者量過大時,肯定不行。最後想著redis如果key過期了,能不能監聽觸發乙個事件,這樣便可以不用時刻的查詢是...
redis 高階功能,過期事件監聽
不談應用場景的技術都是道聽途說 這個問題解決的方案就有多種了,我們可以通過mq來進行,現在大多的mq都帶有死信佇列的機制,我們可以通過這個機制來完成,其次也可以通過quartz的輪詢方式的完成,過程不表選擇合適的應對當前的需求即可。當然本次主要是解決第乙個需求,所以只談如何使用redis來解決。3....