Redis 鍵空間事件通知的具體使用
1. 兩類通知通道
| 通道 | 含義 | 消息載荷 |
|---|---|---|
| __keyspace@<db>__:<key> | 鍵空間通知 | 事件名稱,如 del |
| __keyevent@<db>__:<event> | 鍵事件通知 | 具體鍵名,如 mykey |
可獨立開啟 K(Keyspace)或 E(Keyevent)前綴以精簡流量。
2. 配置開關(guān)
# redis.conf 或命令行 CONFIG SET notify-keyspace-events "KEA" # 常用:所有事件 CONFIG SET notify-keyspace-events "Kxg" # 僅鍵空間 + 過期 + 通用寫
- 空字符串關(guān)閉;
- 至少包含 K 或 E,否則實際不生效;
A= 全部寫操作別名(g$lshztxed);m(miss)、n(new) 需顯式添加。
3. 事件映射速查
DEL mykey→delEXPIRE mykey 10→expire- 鍵過期主動刪除 →
expired - 內(nèi)存淘汰 →
evicted - 新鍵寫入 →
new
所有命令僅在鍵實際變更時產(chǎn)生事件。
4. 監(jiān)聽示例
# 啟用通知 redis-cli config set notify-keyspace-events KEA # 終端 A:訂閱全部 redis-cli --csv psubscribe '__key*__:*' # 終端 B:測試 redis-cli set foo bar redis-cli del foo
輸出順序保證:如 RPOPLPUSH 先 rpop 再 lpush。
5. 過期事件時序
過期事件在 刪除時 觸發(fā),而非 TTL=0 的瞬間。若鍵長期未被訪問,實際觸發(fā)可能延遲;后臺過期線程同樣異步刪除。
6. 集群注意事項
通知僅在持有目標(biāo)分片的節(jié)點產(chǎn)生,不會廣播。想監(jiān)聽全局事件需對每個節(jié)點建立訂閱連接。
7. 最佳實踐
- 按需開啟,避免
"KEA"帶來的高頻流量與 CPU 消耗; - 業(yè)務(wù)只需 DEL/EXPIRE,可用
"Kx"; - 使用模式訂閱結(jié)合前綴過濾減少客戶端解析壓力;
- 消費端應(yīng)異步處理,防止阻塞 Pub/Sub 讀循環(huán);
- 生產(chǎn)環(huán)境監(jiān)控
notify-keyspace-events配置變更,防止誤關(guān)停導(dǎo)致監(jiān)聽失效。
通過合理使用鍵空間事件通知,可輕松實現(xiàn)本地緩存失效、數(shù)據(jù)鏈路審計與實時指標(biāo)上報等場景,提升系統(tǒng)一致性與可觀測性。
到此這篇關(guān)于Redis 鍵空間事件通知的具體使用的文章就介紹到這了,更多相關(guān)Redis 鍵空間事件通知內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis Caffeine實現(xiàn)兩級緩存的項目實踐
本文介紹了使用Redis和Caffeine實現(xiàn)兩級緩存,以提高查詢接口的性能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12
詳解使用Redis SETNX 命令實現(xiàn)分布式鎖
本篇文章主要介紹了詳解使用Redis SETNX 命令實現(xiàn)分布式鎖,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01

