背景:目前在商城項目,訂單有過期邏輯,小伙伴提議用redis做,經討論分析,redis有key的過期事件,貌似可以實現,但是咨詢大神,好像不建議這樣用,可能會丟數據
隨便寫了段python代碼測試
1 import redis 2 3 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') 7 for item in pubsub.listen(): 8 if item['type'] == 'message': 9 print(item['data'])
事件通過 Redis 的訂閱與發布功能(pub/sub)來進行分發,故需要訂閱 __keyevent@0__:expired,其中0表示dbindex
要有事件觸發還需要額外的修改redis配置notify-keyspace-events Ex(默認是空白字符串)
測試:通過redis客戶端添加key,並指定過期時間,key過期時,即會觸發事件。