Skip to content

Redis缓存过期淘汰策略

1. Redis内存满了怎么办

打开redis配置文件,设置maxmemory参数,maxmemory是bytes字节为单位。
在64bit系统下,maxmemory设置为0表示不限制Redis内存使用,一般推荐Redis设置内存为最大物理内存的四分之三。

2. 查看redis内存使用情况

sh
192.168.101.102:6379> info memory
192.168.101.102:6379> config get maxmemory

3. 缓存删除策略

如果一个键是过期的,那它到了过期时间之后是不是马上就从内存中被被删除呢?答案是看情况。

3.1 直接删除

对CPU不友好,用处理器性能换取存储空间。

3.2 惰性删除

对memory不友好,用存储空间换取处理器性能。开启惰性淘汰,lazyfree-lazy-eviction=yes

3.3 定期删除

定期删除策略是前两种策略的折中:
定期删除策略每隔一段时间执行一次删除过期键操作并通过限制删除操作执行时长和频率来减少删除操作对CPU时间的影响。
周期性轮询redis库中的时效性数据,采用随机抽取的策略,利用过期数据占比的方式控制删除频度
特点1:CPU性能占用设置有峰值,检测频度可自定义设置
特点2:内存压力不是很大,长期占用内存的冷数据会被持续清理
总结:周期性抽查存储空间

LRU:最近最少使用页面置换算法,淘汰最长时间未被使用的页面,看页面最后一次被使用到发生调度的时间长短,首先淘汰最长时间未被使用的页面。

LFU:最近最不常用页面置换算法,淘汰一定时期内被访问次数最少的页,看一定时间段内页面被使用的频率,淘汰一定时期内被访问次数最少的页

2. 缓存淘汰策略配置性能建议