Redis | Redis内存淘汰策略、过期策略

x33g5p2x  于2021-12-06 转载在 Redis  
字(1.2k)|赞(0)|评价(0)|浏览(347)
  1. Redis内存淘汰策略

1.1 内存维护解决方案

1.2 主要策略:分为LRU淘汰、TTL淘汰、Random淘汰、LFU淘汰

LRU与LFU是不同的

1.3 内存操作命令

  1. 过期策略

1. Redis内存淘汰策略

1.1 内存维护解决方案

在Redis的配置文件中redis.conf 中memeory managent

  • volatile-lru:从设置过期时间的数据集中(expries)中挑选出最近最少使用的数据淘汰
  • volatile-ttl:从设置过期时间的数据集中(expires)中挑选中将要过期的数据淘汰,ttl的值越大越优先被淘汰
  • **volatile-random:**从设置过期时间的数据集(expries)中随机的选取数据淘汰
  • **allkeys-lru:**从数据集(dict)中挑选最近最少使用的数据淘汰,该策略要淘汰的数据是全体key的集合,而非过期的key
  • **allkeys-random:**从数据集(dict)中选择任意数据淘汰
  • **noeviction:**禁止删除数据,当内存不足时,新写入操作就会报错,请求可以继续进行,保证已插入的数据不会丢失
  • **volatile-lfu:**只从redisDb.expires中,也就是设置了过期时间的key中随机选取对应的key按照lfu规则移除
  • **allkeys-lfu:**从redisDb.dict中,也就是全部key中随机选出对应的key按照lfu规则移除。

1.2 主要策略:分为LRU淘汰、TTL淘汰、Random淘汰、LFU淘汰

LRU策略:(最近最久未使用)核心思想,如果数据最近被访问过,那么将来被访问的几率也就会越高。

**TTL策略:**在Redis中设置过期时间的数据集expries中挑选数据,根据ttl 过期时间来进行淘汰,值越大越先淘汰。

**随机策略:**在数据集中随机数据的获取进行删除

**LFU策略:**Redis 4.0中新增策略,(最近最少使用)核心思想:如果数据在最近一段时间很少被访问到,那么认为数据在将来被访问的可能性也比较小,因此,当空间满时,最小访问频率的数据会被最先淘汰

LRU与LFU是不同的

LRU是最近最少使用页面置换算法(Least Recently Used),也就是首先淘汰最长时间未被使用的页面!

LFU是最近最不常用页面置换算法(Least Frequently Used),也就是淘汰一定时期内被访问次数最少的页!

1.3 内存操作命令

2. 过期策略

redis中对过期的数据的处理,通常有三种方式:

  1. 定时过期:对每个设置过期时间的key都需要建一个定时器,到达过期时间会立即清除。该方法对内存友好,对CPU不友好,会占用大量的CPU资源去处理过期数据;
  2. 惰性过期:只有当访问一个key时,才会判断key是否过期,该方案最大化的节省CPU资源,但会占用内存资源(对CPU友好,对内存不友好);
  3. 定期过期:每隔一定的时间,会扫描一定数据的expires字典中的一些数据,并清除掉其中已过期的数据

相关文章

微信公众号

最新文章

更多