{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
回答