1. 程式人生 > >Redis Key過期通知

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過期通知