Redis-LRU内存淘汰机制与过期策略

目录

过期策略

LRU内存淘汰机制

过期策略

Redis使用过期策略: 惰性删除+定期删除缺略

  • 惰性删除
    • 含义:key过期的时候不删除,每次从数据库获取key的时候去检查是否过期,若过期,则删除,返回null。
    • 优点:删除操作只发生在从数据库取出key的时候发生,而且只删除当前key,所以对CPU时间的占用是比较少的,而且此时的删除是已经到了非做不可的地步(如果此时还不删除的话,我们就会获取到了已经过期的key了)
    • 缺点:若大量的key在超出超时时间后,很久一段时间内,都没有被获取过,那么可能发生内存泄露(无用的垃圾占用了大量的内存)
  • 定期删除
    • 含义:每个一段时间(默认100ms)会 随机删除一些过期的key
    • 优点:
      • 通过限制删除操作的时长和频率,来减少删除操作对CPU时间的占用--处理"定时删除"的缺点
      • 定期删除过期key--处理"惰性删除"的缺点
    • 缺点
      • 在内存友好方面,不如"定时删除"
      • 在CPU时间友好方面,不如"惰性删除"
    • 难点
      • 合理设置删除操作的执行时长(每次删除执行多长时间)和执行频率(每隔多长时间做一次删除)(这个要根据服务器运行情况来定了)

LRU内存淘汰机制

         如果redis 内存满了怎么办?

        1. 增加内存

        2. 使用内存淘汰策略

                        Redis 配置文件redis.conf 的maxmemory参数 可以去控制器内存大小;

                        如果超过了 maxmemory的设置内存大小,那么淘汰策略 maxmemory-policy 参数配置默认值 noeviction;

                        noeviction(默认): 拒绝写操作, 不删除键,只返回错误,  默认策略, 不建议使用;

                        volatile-ttl: 删除生存时间最短的一个key;

                        allkeys-random: 随机删除一个key;

                        volatile-random: 随机删除一个设置了生存时间的key;

                        allkeys-lru: 使用lru 算法删除一个key  也就是 删除一个最近在最少使用的key;

                        volatile-lru: 使用lru算法删一个这设置了生存时间的key 删除一个设置了生存时间最近最少使用的key;

                        lru:  最近最少使用的算法, 也就是删除最近最少使用的key;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一介草民丶

谢谢老板的一分钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值