猿创征文|Redis删除策略


📃个人主页:不断前进的皮卡丘
🌞博客描述:梦想也许遥不可及,但重要的是追梦的过程,用博客记录自己的成长,记录自己一步一步向上攀登的印记
🔥个人专栏:微服务专栏

过期数据

Redis中的数据特征

  • Redis是内存级别的数据库,所有的数据都是存储在内存中,内存中的数据我们可以通过TTL来获取数据的状态
  • TTL key
    • xx:具有时效性的数据
    • -1:永久有效的数据
    • -2:已经过期的数据,或者是被删除的数据,或者是没有被定义的数据

过期数据是否被真正删除

其实,可能大家会有一种疑惑,就是说那些过期的数据是真的被删除了吗。就像平时在生活中父母让我们倒垃圾,我们会说好的,马上就去倒垃圾,但是很经常都是等一会时间才去倒垃圾。那么,Redis会不会也和我们一样,有懒惰心理呢?

假设现在Redis要处理一个数据,当它发出指令给CPU的时候,这个时候CPU觉得还挺OK,没有什么压力。但是,如果Redis要处理很多的数据,这个时候命令很多,CPU就会觉得压力挺大的,CPU的性能就会降低,此时,Redis就会和CPU说,先把正事给做了,那些过期数据先不着急处理,set,get等命令要先进行处理。也就是说那些过期的数据可能还是先存放在内存里面的,等到真正要删除的时候,才把过期数据从内存中删除。

Redis删除策略

我们肯定是希望当CPU忙的时候,就不要再给它添加太多的压力,所以尽可能让CPU在空闲的时候,来处理那些过期的数据。在内存占用与CPU占用之间寻找一种平衡,顾此失彼都会造成整体redis性能的下降,甚至引发服务器宕机或
内存泄露

时效性数据的存储结构

在这里插入图片描述

定时删除

1️⃣定时删除就是创建一个定时器,然后我们对key设置一个有效时间,当有效时间到的时候,定时器任务就会马上对key进行删除。
2️⃣这种删除方法可以节约内存空间,因为它可以很快释放掉不需要的内存占用,但是这样做也会导致CPU的压力很大,影响redis服务器响应时间和指令吞吐量。
3️⃣这种方法是以时间换空间(存储性能换存储空间)

在这里插入图片描述

惰性删除

📖惰性删除其实和我们现实生活中做的很多事情很像,事情没有马上做,而是拖延一定时间再去做。
📖当数据到达过期时间的时候,并不着急做处理,等到下次再访问这个数据的时候,如果说这个数据还没有过期,就返回这个数据。如果说这个数据已经过期了,那么就把这个数据删除,然后返回不存在。
📖这种删除策略的好处就是可以节约CPU性能,等到必须删除的时候才删除,不过这样子的话,会导致内存压力很大,内存里面有很多不必要的数据
📖这种策略是用存储空间换处理器性能(空间换时间)

在这里插入图片描述

定期删除

定期删除策略每隔一段时间执行一次删除过期键操作,并通过限制删除操作执行时长和频率来减少删除操作对CPU时间的影响。除此之外,通过定期删除过期键,定期删除策略有效的减少了因为过期键而带来的内存浪费。
在这里插入图片描述
周期性轮询redis库中的时效性数据,采用随机抽取的策略,利用过期数据占比的方式控制删除频度
特点1:CPU性能占用设置有峰值,检测频度可自定义设置
特点2:内存压力不是很大,长期占用内存的冷数据会被持续清理
总结:周期性抽查存储空间
(随机抽查,重点抽查)

逐出算法

基本介绍

📖上面讲的三种删除策略是基于数据库中key的有效时间有关的,如果说有新的数据要进入redis,但是内存不足怎么办?
📖Redis使用内存存储数据,在执行每一个命令前,会调用freeMemoryIfNeeded()检测内存是否充足。如果内存不满足新加入数据的最低存储要求,redis要临时删除一些数据为当前指令清理存储空间。清理数据的策略称为逐出算法。
📖注意:逐出数据的过程不是100%能够清理出足够的可使用的内存空间,如果不成功则反复执行。当对所
有数据尝试完毕后,如果不能达到内存清理的要求,将出现错误信息。
📖(error) OOM command not allowed when used memory >'maxmemory‘

相关配置

命令功能描述
maxmemory最大可用内存,占用物理内存的比例默认是0,表示不限制。生存环境中根据实际需要来设置,一般设置在50%以上
maxmemory-samples每次选取待删除数据的个数,选数据的时候不会全数据库扫描,这样会导致性能严重消耗,降低读写性能,因此采用随机获取数据的方式作为待检测删除数据
maxmemory-policy删除策略,达到最大内存以后,对被挑选出来的数据进行删除的策略

相关算法

在这里插入图片描述
使用INFO命令输出监控信息,查询缓存 hit 和 miss 的次数,根据业务需求调优Redis配置

  • 11
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不断前进的皮卡丘

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值