Redis基础篇(内存淘汰、过期删除)

80 阅读2分钟

过期删除策略和内存淘汰策略有什么区别?

  • 内存淘汰策略是指Redis的内存使用量达到了配置的最大内存限制参数后,主动淘汰一些不必要的内存资源,以腾出空间。
  • 过期删除策略是删除已经过期的键值对,采用的惰性删除+定期删除策略。

内存淘汰策略

大致分为两类,一类进行淘汰,一类不仅淘汰。 image.png

  1. 默认策略,不进行任何的数据淘汰,当运行内存超过最大设置内存时,拒绝任何写入操作,直接返回错误。但如果只是单纯的查询和删除的话,是正常的。

数据淘汰策略中,也分为两类,一类是针对设置了过期时间的,一类是针对全范围的。

设置过期时间的淘汰策略:

  • LFU(最近最少使用)、LRU(最久未使用)、ttl(优先淘汰更早的键值对)、random(随机淘汰过期的键值对)

针对全范围:

  • random(随机淘汰任意简直对)、LFU(最少使用,频率尺度)、LRU(最久未使用,时间尺度)

过期删除策略

惰性删除指的是每次Redis访问时,都判断该key是否过期了,如果过期则进行删除,返回null给客户端,支持异步删除,redis 4.0之后的提供的参数:lazyfree_lazy_expire。

Redis的定期删除策略:每隔一段时间,随机抽取一定量的key,筛选其中过期的key进行删除;如果过期key的数量超过25%,则进行重复这一个过程。

这个间隔时间是多长了? 默认是每秒进行10次操作,可以在redis.conf进行配置。

随机抽查的数量是多少呢? 20个,写死在代码里面的。