redis系列 五 redis 快取設計

2021-10-01 22:24:44 字數 1367 閱讀 6692

序號

名稱鏈結位址

1redis系列(一) redis安裝以及基本型別簡介

2redis系列(二) redis持久化

3redis系列(三) redis主從複製

4redis系列(四) redis哨兵模式與集群

5redis系列(五) redis 快取設計

1.1收益

加速讀寫:因為快取通常都是全記憶體的(例如redis、memcache),而儲存層通常讀寫效能不夠強悍(例如mysql),通過快取的使用可以有效地加速讀寫,優化使用者體驗。

降低後端負載:幫助後端減少訪問量和複雜計算(例如很複雜的sql語句),在很大程度降低了後端的負載。

使用redis帶來的成本

使用場景

2.1 記憶體溢位淘汰策略

當redis所用記憶體達到maxmemory上限(used_memory>maxmemory)時會觸發相應的溢位控制策略。具體策略受maxmemory-policy引數控制。

redis支援6種策略:

1)noeviction:預設策略,不會刪除任何資料,拒絕所有寫入操作並返回客戶端錯誤資訊(error)oom command not allowed when used memory,此時redis只響應讀操作。

2)volatile-lru:根據lru演算法刪除設定了超時屬性(expire)的鍵,直到騰出足夠空間為止。如果沒有可刪除的鍵物件,回退到noeviction策略。

3)volatile-random:隨機刪除過期鍵,直到騰出足夠空間為止。

4)allkeys-lru:根據lru演算法刪除鍵,不管資料有沒有設定超時屬性,直到騰出足夠空間為止。

5)allkeys-random:隨機刪除所有鍵,直到騰出足夠空間為止。

6)volatile-ttl:根據鍵值物件的ttl屬性,刪除最近將要過期資料。如果沒有,回退到noeviction策略

記憶體溢位控制策略可以採用config set maxmemory-policy動態配置。

寫命令導致當記憶體溢位時會頻繁執行**記憶體成本很高,如果redis有從節點,**記憶體操作對應的刪除命令會同步到從節點,導致寫放大的問題。

2.2  過期刪除

2.2.1 惰性刪除

2.2.2 定時刪除

redis內部維護乙個定時任務,預設每秒執行10次。通過hz修改執行次數。定時任務中刪除過期鍵邏輯採用了自適應演算法,根據鍵的過期比例、使用快慢兩種速率模式**鍵。servercron

慢模式:定時任務執行時間超過25毫秒自動退出

快模式:上次執行時間超過25毫秒,則採用快模式,快模式下超時時間為1毫秒且2秒內只能執行1次。

請參考:

Redis系列五 Redis持久化

一 rdb redis database 1 介紹 在指定的時間間隔內將記憶體中的資料集快照寫入磁碟,也就是行話講的snapshot快照,它恢復時是將快照檔案直接讀到記憶體裡。redis會單獨建立 fork 乙個子程序來進行持久化,會先將資料寫入到乙個臨時檔案中,待持久化過程都結束了,再用這個臨時檔...

Redis快取系列 三 redis記憶體管理

redis中,它的key的型別都是string,大小為512m 而value的型別的大小又不太相同 我們在啟動redis服務的時候,可以在它的配置檔案redis.conf中來配置它的最大記憶體閾值和達到閾值的執行策略,配置如下 最大記憶體控制 maxmemory 1gb 達到最大閾值的淘汰策略 下邊...

Redis入門系列(五) Redis的Set型別

可以想象一下高中學過的集合,一樣。set 元素無序,元素不可重複。list 元素有序,元素可重複。set可以進行差集 交集 並集的運算。sadd letters a b 向集合letters中新增元素a b srem letters a 移除集合letters中的元素a smembers lette...