mysql不能自动回收内存_Redis 删除数据后不能自动释放内存么?

Redis本来就不会自动释放内存。https://blog.csdn.net/Leon_cx/article/details/82597740​blog.csdn.net

摘抄几段关键的:内存回收策略

Redis的内存回收策略主要体现在两个方面:

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

- 内存达到 maxmemory 后的淘汰机制

删除过期键对象

由于Redis进程内保存了大量的键,维护每个键的过期时间去删除键会消耗大量的CPU资源,对于单线程的Redis来说成本很高。所以Redis采用惰性删除 + 定时任务删除机制来实现过期键的内存回收。

惰性删除:当客户端读取键时,如果键带有过期时间并且已经过期,那么会执行删除操作并且查询命令返回空。这种机制是为了节约CPU成本,不需要单独维护一个TTL链表来处理过期的键。但是这种删除机制会导致内存不能及时得到释放,所以将结合下面的定时任务删除机制一起使用。

定时任务删除:Redis内部维护一个定时任务,用于随机获取一些带有过期属性的键,并将其中过期的键删除。来删除一些过期的冷数据。

在兼顾CPU和内存的的考虑下,Redis使用惰性删除 + 定时任务删除机制相结合,来删除过期键对象。

定时任务删除不会一次性把所有过期的key全删了,而是抽样一部分。对样本里面过期的数据进行删除。

上述算法的好处就是节约CPU,毕竟redis是单线程,CPU很珍贵滴。当然,你要是内存不多了,达到了redis设置的阈值,redis就会拼命的删数据腾地方了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值