Redis Key過期通知

概述

鍵空間通知使得客戶端可以通過訂閱頻道或模式, 來接收那些以某種方式改動了 Redis 數據集的事件。如Redis數據庫中鍵的過期事件也是通過訂閱功能實現。本文主要基於Azure PaaS Redis演示相關功能的具體實現。

配置

因爲開啓鍵空間通知功能需要消耗一些 CPU , 所以在默認配置下, 該功能處於關閉狀態。因爲Azure Redis屏蔽了部分指令,不能直接使用cli指令設置notify-keyspace-events參數,目前可以通過Azure Portal管理門戶直接設置。注意: 基本版的Redis還不支持設置該參數。

image

操作演示

pub/sub
  • 使用Azure Console發佈消息
    image

  • 使用Cli工具訂閱消息(注意使用cli連接Azure redis需要打開6379端口)
    image

sub expired key event
  • 設置帶有過期時間的key
    image

  • 訂閱過期key事件
    image

注意

Redis 使用以下兩種方式刪除過期的鍵:

1、當一個鍵被訪問時,程序會對這個鍵進行檢查,如果鍵已經過期,那麼該鍵將被刪除。

2、底層系統會在後臺漸進地查找並刪除那些過期的鍵,從而處理那些已經過期、但是不會被訪問到的鍵。

當過期鍵被以上兩個程序的任意一個發現、 並且將鍵從數據庫中刪除時, Redis 會產生一個 expired 通知。

Redis 並不保證生存時間(TTL)變爲 0 的鍵會立即被刪除: 如果程序沒有訪問這個過期鍵, 或者帶有生存時間的鍵非常多的話, 那麼在鍵的生存時間變爲 0 , 直到鍵真正被刪除這中間, 可能會有一段比較顯著的時間間隔。


參考鏈接

鍵空間通知(keyspace notification)

redis過期通知

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章