Redis 内存管理(淘汰策略/删除策略)
创始人
2025-06-01 14:29:25
0

目录

  • Redis 内存管理(淘汰策略/删除策略)
    • 一、淘汰算法
        • 1、LRU算法
        • 2、LFU算法
    • 二、Redis 8种淘汰策略
    • 三、删除策略

Redis 内存管理(淘汰策略/删除策略)

一、淘汰算法

1、LRU算法

LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。
时间T:数据自上一次到现在的时间.

2、LFU算法

说明:LFU算法是redis5以后才提出的.
LFU(least frequently used (LFU) page-replacement algorithm)。即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。
使用次数越少越先被删除.

二、Redis 8种淘汰策略

  1. volatile-lru: 将设定了超时时间的数据,采用LRU算法将数据提前删除.
  2. allkeys-lru -> 对所有的数据采用LRU算法进行删除
  3. volatile-lfu -> 设定超时时间的数据采用LFU算法删除
  4. allkeys-lfu -> 对所有数据采用LFU算法删除
  5. volatile-random 设定了超时时间的数据随机删除
  6. allkeys-random 所有数据随机删除
  7. volatile-ttl 设定了超时时间的数据根据剩余时间少的删除数据
  8. noeviction 不删除内存数据,如果内存溢出报错返回.

修改redis配置文件600行.

# The default is:
# maxmemory-policy volatile-lru

三、删除策略

  • 定时删除

    • 创建一个定时器,定时的执行对key的删除操作
    • 优点:CPU来说并不是友好的
    • 缺点:程序需要维护一个定时器,这就会占用 CPU的资源
  • 惰性删除

    • 每次只有再次访问 key 的时候,才会检查 key 的过期时间,若是已经过期了就执行删除
    • 优点:CPU来说是友好的
    • 缺点:内存来说是不友好的
  • 定期删除

    • 每隔一段时间,就会检查删除掉过期的 key
    • 定期删除是上述两种方案的折中方案,每隔一段时间删除过期的 key,也就是根据具体的业务,合理的取一个时间定期的删除 key

相关内容

热门资讯

高温催生清凉经济 冰杯销量增长... (来源:中国消费者报)图:商店冰柜中的冰杯产品。■本报记者 李燕京 文/摄  盛夏骄阳似火,冰杯成为...
国家育儿补贴8月下旬开领   本报记者 吴娜  《育儿补贴制度实施方案》(简称“方案”)已于近日发布。记者从昨天举行的国新办发...
连云港举办2025年夏季人才交... (来源:新华日报) 本报讯 (万骏) 7月25日,“留连望返·就在港城”2025年夏季人才交...
出台跨境电商监管服务工作指引 (来源:中国消费者报)  本报南宁讯(何芳华 记者顾艳伟)7月28日,记者从广西壮族自治区防城港市市...
检查保健食品 守护银发健康 (来源:中国消费者报)  近日,北京市西城区市场监管局月坛街道市场监管所开展保健食品专项检查。执法人...