Redis Key過期通知
阿新 • • 發佈:2018-11-22
概述
鍵空間通知使得客戶端可以通過訂閱頻道或模式, 來接收那些以某種方式改動了 Redis 資料集的事件。如Redis資料庫中鍵的過期事件也是通過訂閱功能實現。本文主要基於Azure PaaS Redis演示相關功能的具體實現。
配置
因為開啟鍵空間通知功能需要消耗一些 CPU , 所以在預設配置下, 該功能處於關閉狀態。因為Azure Redis遮蔽了部分指令,不能直接使用cli指令設定notify-keyspace-events引數,目前可以通過Azure Portal管理門戶直接設定。注意: 基本版的Redis還不支援設定該引數。
操作演示
pub/sub
使用Azure Console釋出訊息
使用Cli工具訂閱訊息(注意使用cli連線Azure redis需要開啟6379埠)
sub expired key event
設定帶有過期時間的key
訂閱過期key事件
注意
Redis 使用以下兩種方式刪除過期的鍵:
1、當一個鍵被訪問時,程式會對這個鍵進行檢查,如果鍵已經過期,那麼該鍵將被刪除。
2、底層系統會在後臺漸進地查詢並刪除那些過期的鍵,從而處理那些已經過期、但是不會被訪問到的鍵。
當過期鍵被以上兩個程式的任意一個發現、 並且將鍵從資料庫中刪除時, Redis 會產生一個 expired 通知。
Redis 並不保證生存時間(TTL)變為 0 的鍵會立即被刪除: 如果程式沒有訪問這個過期鍵, 或者帶有生存時間的鍵非常多的話, 那麼在鍵的生存時間變為 0 , 直到鍵真正被刪除這中間, 可能會有一段比較顯著的時間間隔。