过期删除策略和内存淘汰策略有什么区别?
- 内存淘汰策略是指Redis的内存使用量达到了配置的最大内存限制参数后,主动淘汰一些不必要的内存资源,以腾出空间。
- 过期删除策略是删除已经过期的键值对,采用的惰性删除+定期删除策略。
内存淘汰策略
大致分为两类,一类进行淘汰,一类不仅淘汰。
- 默认策略,不进行任何的数据淘汰,当运行内存超过最大设置内存时,拒绝任何写入操作,直接返回错误。但如果只是单纯的查询和删除的话,是正常的。
数据淘汰策略中,也分为两类,一类是针对设置了过期时间的,一类是针对全范围的。
设置过期时间的淘汰策略:
- 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个,写死在代码里面的。