0
点赞
收藏
分享

微信扫一扫

猿创征文|Redis删除策略




✨ Redis删除策略

  • ​​过期数据​​
  • ​​Redis中的数据特征​​
  • ​​过期数据是否被真正删除​​
  • ​​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性能的下降,甚至引发服务器宕机或
内存泄露

时效性数据的存储结构

猿创征文|Redis删除策略_数据库

定时删除

惰性删除

定期删除

逐出算法

基本介绍

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

相关配置

命令

功能描述

maxmemory

最大可用内存,占用物理内存的比例默认是0,表示不限制。生存环境中根据实际需要来设置,一般设置在50%以上

maxmemory-samples

每次选取待删除数据的个数,选数据的时候不会全数据库扫描,这样会导致性能严重消耗,降低读写性能,因此采用随机获取数据的方式作为待检测删除数据

maxmemory-policy

删除策略,达到最大内存以后,对被挑选出来的数据进行删除的策略

相关算法

猿创征文|Redis删除策略_redis_05


使用INFO命令输出监控信息,查询缓存 hit 和 miss 的次数,根据业务需求调优Redis配置


举报

相关推荐

0 条评论