框架——緩存框架——redis——功能——key事件

1、概念

  默認情況下,事件配置是禁用的,查看配置文件,代碼如下:

# 空字符串表示禁用
notify-keyspace-events ""

  事件配置是根據類型劃分的,不是某個具體的指令。

前兩項K,E表示的是事件的類型,key類型的事件有:

  1. x,表示key過期。
  2. e,表示key準備被移除。
  3. m,表示訪問該key時不存在
  4. n,表示新key的添加。
K     Keyspace events, published with __keyspace@<db>__ prefix.(key類型的事件)
E     Keyevent events, published with __keyevent@<db>__ prefix.(command類型的事件)
g     Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ...(與具體類型無關的命令)
$     String commands(字符串數據類型的命令)
l     List commands(list數據類型的命令)
s     Set commands(set數據類型的命令)
h     Hash commands(hash數據類型的命令)
z     Sorted set commands(sorted set數據類型的命令)
t     Stream commands(stream數據類型的命令)
d     Module key type events()
x     Expired events (events generated every time a key expires)(key過期的事件)
e     Evicted events (events generated when a key is evicted for maxmemory)(key移除的事件)
m     Key miss events (events generated when a key that doesn't exist is accessed)(key不存在的事件)
n     New key events (Note: not included in the 'A' class)(新key的事件)
A     Alias for "g$lshztxed", so that the "AKE" string means all the events except "m".(所有命令的事件)

2、訂閱

  客戶端通過pub/sub功能訂閱服務器端key相關事件,服務器端key事件觸發後會有消息,可以指定消息的pattern。

  示例:

# 所有類型的事件
'__key*__:*'
# keyspace類型的事件
"__keyspace*__:*" || "__keyevent*__:*"
# 數據庫0
"__keyspace@0__:*"
# 只監控myKey 或者只監控del事件
"__keyspace*__:myKey" || "__keyevent*__:del"

3、命令

  參考官網

4、過期事件

  Key過期觸發的時機如下:

  1. 當操作key時,發現key過期。
  2. 後臺進程在查詢哪些key過期。

意思是expired事件觸發,並不是key的ttl變爲0,而是在過期之後,某個操作再次訪問到該key時觸發。

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