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

目录

  • 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

相关内容

热门资讯

康恩贝:成立AI专项工作组,完... 有投资者在互动平台向康恩贝提问:“AI制药是大趋势,请问贵司针对AI制药有哪些布局及投入应用?” 针...
触摸春天读后感2篇 触摸春天读...   篇一:触摸春天读后感    今天,我们学了一篇课文《触摸春天》。他让我明白了:人的生命只有一次,...
课文触摸春天读后感 课文触摸春...   课文触摸春天读后感    今天,我们学了《触摸春天》这篇课文。课文中的安静是个盲童,她不像别的双...
了凡四训读后感 了凡四训读后感...   《了凡四训》读后感    《了凡四训》第一篇,立命之学。”命由天做,福自己求”了凡先生的人生,他...
大数据读后感 大数据读后感 大...   《大数据》读后感    现代社会是一个技术奔腾、信息爆炸的社会,大数据这个新概念一出现就受到了人...