redis(七)-客戶端緩存

參考資料:
redis 4.x cookbook 中文版;
redis官方文檔
注: 本文redis的版本爲: 5.0.3

redis學習路徑

客戶端緩存是redis6.x的新特性:

可用於緩解高併發情況下redis數據庫的壓力;
它有兩種實現方式:

方式1:
①redis數據庫服務中爲每個key保存所有請求過它的客戶端ID列表;在這個key超時或者被某個鏈接修改時,對列表內的所有客戶端發送失效消息,讓客戶端將本地緩存中對應的key刪除掉;
②redis客戶端決定自己需要緩存哪些數據,需要先開啓跟蹤轉發:CLIENT TRACKING on REDIRECT clientid OPTIN,然後可以使用 client caching yes|no命令開啓緩存,跟在這個命令後的第一個命令返回的數據將會被客戶端緩存(如果是事務或者腳本的話,內部的命令都將被緩存,因爲它們是一起返回給客戶端的);

方式2:
CLIENT TRACKING on REDIRECT clientid BCAST PREFIX user: 此命令意味着這個客戶端將要緩存所有以"user:"開頭的key;當數據庫接收到此消息後,在"user:"開頭的key被修改或者過期時,將會推送消息給對應的客戶端;客戶端就會將本地緩存的數據刪除;

它們的優缺點:
方式1:
第①種模式:數據庫中key越多,所需的內存就會成倍上升;且客戶端會收到很多不必要的緩存過期消息(由於本地緩存槽刷新導致的);第②種模式:是第①種模式的優化;
方式2:
由於是廣播的訂閱形式,所以如果被訂閱的前綴key越多,那麼服務器的cpu使用率將越高;

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