【Redis】Redis内存回收机制

前置问题

  • Q1、设置的 key 明明已经过期了,为啥 仍然占用内存?
  • Q2、设置的 key 明明还没有过期,为啥 这个 key 就不见了?

这两个问题,通过 Redis 内存回收机制能够得到完美的解答。

Redis 内存回收机制

Redis 在两种情况下会回收 key 占用的内存:

  • 用户主动设置过期时间,时间到了,被回收
  • redis 中key达到了 redis 设置的 max_memory ,内存溢出。Redis 通过 LRU 算法进行Redis 内存回收。

1、删除达到过期时间的键对象

在 Redis 进程内保存了大量用户存入的 key ,针对设置了过期时间的 key ,如果每一个 key 进行精准的控制-当key过期立即回收空间,对于单线程的Reids来说成本太高。所以 Redis 中的 key 过期了,占用的内存空间并不会马上被回收, Redis 采用了两种方式:惰性删除定时任务删除 来进行空间回收

  • 惰性删除

    当客户端进行某个 key 的get 访问,该key被设置了过期时间,如果此时 get 操作的时候 key 过期了,此时 Redis 将会针对该 key 占用的空间进行回收。

    优点:该方式采用用户访问的方式进行空间回收,无需维护 key 的 TTL 链表数据。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值