鍵空間通知使得客戶端能夠經過訂閱頻道或模式, 來接收那些以某種方式改動了 Redis 數據集的事件。如Redis數據庫中鍵的過時事件也是經過訂閱功能實現。本文主要基於Azure PaaS Redis演示相關功能的具體實現。html
由於開啓鍵空間通知功能須要消耗一些 CPU , 因此在默認配置下, 該功能處於關閉狀態。由於Azure Redis屏蔽了部分指令,不能直接使用cli指令設置notify-keyspace-events參數,目前能夠經過Azure Portal管理門戶直接設置。注意: 基本版的Redis還不支持設置該參數。redis
使用Azure Console發佈消息
數據庫
使用Cli工具訂閱消息(注意使用cli鏈接Azure redis須要打開6379端口)
工具
設置帶有過時時間的key
spa
訂閱過時key事件
.net
Redis 使用如下兩種方式刪除過時的鍵:htm
一、當一個鍵被訪問時,程序會對這個鍵進行檢查,若是鍵已通過期,那麼該鍵將被刪除。blog
二、底層系統會在後臺漸進地查找並刪除那些過時的鍵,從而處理那些已通過期、可是不會被訪問到的鍵。事件
當過時鍵被以上兩個程序的任意一個發現、 而且將鍵從數據庫中刪除時, Redis 會產生一個 expired 通知。get
Redis 並不保證生存時間(TTL)變爲 0 的鍵會當即被刪除: 若是程序沒有訪問這個過時鍵, 或者帶有生存時間的鍵很是多的話, 那麼在鍵的生存時間變爲 0 , 直到鍵真正被刪除這中間, 可能會有一段比較顯著的時間間隔。