{eval=Array;=+count(Array);}
1)業務數據在不斷地增長,不可能將所有數據全部存儲在 Redis 緩存中,內存的價格遠遠大于磁盤。所以需要做淘汰機制的設計;
(2)緩存的淘汰就是根據一定的策略,將不太重要的數據從緩存中進行刪除;
(3)Redis 一共有 8 種淘汰策略,在 Redis 4.0 之前有 6 種,4.0 之后又增加了 2 種,如下圖:
(4)緩存策略的解釋:
◆ volatile-random:在設置了過期時間的數據中,進行隨機刪除;
◆ volatile-ttl:根據過期時間,越早過期的數據越先刪除;
◆ volatile-lru:在設置了過期時間的數據中,根據 LRU 算法進行數據刪除;
◆ volatile-lfu:在設置了過期時間的數據中,根據 LFU 算法進行數據刪除;
◆ allkeys-lru:在所有數據中,根據 LRU 算法進行數據刪除;
◆ allkeys-random:在所有數據中,進行隨機刪除;
◆ allkeys-lfu:在所有數據中,根據 LFU 算法進行數據刪除;
(5)默認情況下,當 Redis 的使用空間超過 maxmemory 設置的大小時,并不會淘汰數據,也就是執行的 noeviction 策略,如果寫滿,再有寫請求時就會出錯;
(6)如果業務中有明顯的熱數據和冷數據,優先使用 allkeys-lru 策略,讓熱數據保留在緩存中;
(7)如果業務中沒有明顯冷熱數據,可以使用 volatile-random 或 allkeys-random。
1
回答2
回答0
回答1
回答0
回答1
回答0
回答0
回答10
回答0
回答