
大家好,我是悟空哥。
今天给大家带来的大厂面试题:
Redis 的缓存淘汰策略有哪些?
小空听完这题后,不假思索地回答:根据过期时间的先后顺序进行删除
面试官微微一笑:还有吗?
小空支支吾吾地没有答上来
面试官继续说道,那我跟你讲下吧。
Redis 的缓存淘汰策略总共有 8 种,这里有一张思维导图,你可以收藏起来。

首先可以分为两大类:淘汰和不淘汰淘汰又分为两大类
从设置了过期时间的数据中删除,另外一种是从所有数据中淘汰
下面是对 8 种淘汰策略的解释
第一种是:volatile-ttl 策略
在筛选时,会针对设置了过期时间的键值对,根据过期时间的先后进行删除,越早过期的越先被删除
第二种:volatile-random策略。
在设置了过期时间的键值对中,进行随机删除。
第三种是:volatile-lru 策略
使用 LRU 算法筛选设置了过期时间的键值对。最近最少使用的会被删掉。
第四种是:volatile-lfu 策略
会使用 LFU 算法选择设置了过期时间的键值对
首先会筛选并淘汰访问次数少的数据,然后针对访问次数相同的数据,再筛选并淘汰访问时间最久远的数据
第五种:allkeys-random 策略
从所有键值对中随机选择并删除数据
第六种:allkeys-lru 策略
使用 LRU 算法在所有数据中进行筛选
第七种:allkeys-lfu 策略
使用 LFU 算法在所有数据中进行筛选
第八种:默认情况下
Redis 在使用的内存空间超过 maxmemory 值时,并不会淘汰数据,也就是设定的 noeviction 策略。写满后再写,会返回错误
小空听完后,叹了一口气,今天又是被面试官吊打的一天
我是悟空,期待与你一起打怪升级变强,我们下期见。
















