【Redis运维】Redis过期数据淘汰策略

tanglu 38 2021-11-24

一、Redis如何处理过期数据

当Redis中存放的数据过期后,Redis并不会立即删除数据,而是等新请求读写该数据时进行一次检查,如果发现数据已过期就删除。这样可以尽量减少删除操作对CPU资源的使用,对于用不到的数据就不再浪费时间进行检查和删除了,这种过期数据的处理方式叫做惰性删除。由于该方式会导致大量过期数据留存,所以Redis还会使用定期删除策略,每隔一段时间(默认 100ms)随机选出一定数量的数据,然后把其中过期的数据删除。


二、Redis过期数据淘汰策略

对于过期数据的淘汰策略分为了多种,以下是该选项常用值含义:

· noeviction:Redis过期数据默认淘汰策略,对于过期数据不进行淘汰处理,而堆积到最大可用内存阈值后客户端将返回command not allowed when used memory > 'maxmemory'的错误

· volatile-random:随机删除设有过期时间的key

· volatile-ttl:优先淘汰设有过期并且即将过期的key

· volatile-lru:从所有设置了过期时间的键值中淘汰最长时间未使用的Key,即保留最近访问过的数据。但是会存在一个很久没有被用到的Key因为最近被访问了一次而不被淘汰的问题。

· volatile-lfu优先保留访问次数最频繁的数据(4.0+版本支持)

· allkeys-lru:LRU算法是4.0之后的新算法,根据总访问次数来淘汰数据,解决了偶尔被访问一次之后数据就不会被淘汰的问题

· allkeys-random:随机在所有key中进行删除


三、Redis过期策略配置

要设置过期数据淘汰策略的话只需要修改maxmemory-policy变量的值即可

CONFIG GET maxmemory-policy  #查看当前过期策略
CONFIG SET maxmemory-policy volatile-lfu  #设置过期策略
CONFIG REWRITE  #写入配置文件


版权声明
本站所有文章均为原创,转载请注明出处!小站维护不易,如果对您有所帮助,希望能点击一下站内广告,谢谢!
上一篇:【Redis运维】Redis各版本特性对比
下一篇:【系统运维】NUMA介绍与关闭方法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

微信二维码