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