为什么要清洁Redis

Redis是基于内存上进行数据的操作的,并非像以往我们所安装的底层数据库一样存在磁盘上的。在机子中,缓存的容量是有限的。 比较起存储在磁盘,其可存储量会小很多很多,随着程序的运行,缓存的数据只会越来越多,而因为容量有限我们不能无节制的存下去,因此需要对部分缓存的数据进行清理,以提供空间给新的数据进行缓存。

如何清洁

一、定时删除

在Redis缓存的数据中,几乎所有数据都会被标上一个过期时间,而这个过期时间是作为Redis清理数据腾出空间的一个重要依据。
定时删除的原理在于:为数据设置一个过期时间。每过一个时间周期,Redis会随机遍历一部分数据,当检测到数据已经到达了过期时间后,Redis就会将这些数据清除掉。 (为什么是随机遍历:如果全部遍历,十分耗费时间,影响性能)

每过一个时间周期,Redis都会遍历一部分数据,并对这部分数据中到达了过期时间的数据进行清除。具体如上图所示。而从图中我们也可以看到该方法是存在一定的弊端的。因为是随机遍历一部分数据,所以可能会有些已过期但从来都没被遍历到的数据存在,而这些陈年老数据一直不会被清除,占用在内存中。

二、惰性删除

惰性删除与定时删除有种组合拳的意思。
惰性删除的原理在于:当有请求访问到了一个已到达过期时间且未被清理的数据时,Redis就会检测到这个过期数据并进行清除。

如图所描述的,当有外来的请求访问到该数据时,若检测到过期时间已经到达,Redis就会删除这个数据。惰性删除也有着一个缺陷,如果一些陈年老数据一直未被请求访问到, 则该数据可能永远都不会被删除。

三、内存淘汰策略

在定时删除与惰性删除这套组合拳下,解决了极大部分的Redis清洁工作。但由于两者所存在的不足之处,很可能会出现永远没被删除的陈年且无用的老数据,这种数据很可能会随着业务的增加而越堆越多,这十分浪费我们宝贵的内存资源。
在解决这个问题上,我们使用到了Redis所提供的内存淘汰策略,为完成Redis的清理补上最后的一块拼图。
Redis一共提供了8种内存淘汰策略。如下图所示

使用时,首先在配置文件redis.conf 中,参数 maxmemory 来设定最大内存,当达到最大内存后就会触发内存淘汰策略。然后通过设置 maxmemory-policy 来指定使用哪种内存淘汰策略。

Redis的清洁——定期删除+惰性删除+内存淘汰策略相关推荐

  1. Redis过期删除策略和内存淘汰策略

    目录 一.过期删除策略 1.如何设置过期时间? 2.如何判定 key 已过期了? 3.过期删除策略有哪些? 1.定时删除策略 2.惰性删除策略 3.定期删除策略 4.Redis 过期删除策略 5.Re ...

  2. 面试官:Redis 过期删除策略和内存淘汰策略有什么区别?

    作者:小林coding 计算机八股文网站:https://xiaolincoding.com 大家好,我是小林. Redis 的「内存淘汰策略」和「过期删除策略」,很多小伙伴容易混淆,这两个机制虽然都 ...

  3. redis高级-内存淘汰策略

    目录 一.redis缓存过期淘汰策略 1.redis默认内存 2.修改redis内存 3.查看redis内存情况 二.redis内存超出了设置的最大值会怎么样 1.设置1个字节之后再赋值,会爆OOM ...

  4. Redis——》内存淘汰策略

    推荐链接:     总结-->[Java]     总结-->[Mysql]     总结-->[Redis]     总结-->[Spring]     总结-->[S ...

  5. redis详解- 过期删除策略和内存淘汰策略

    设置redis键过期时间 Redis提供了四个命令来设置过期时间(生存时间). ①.EXPIRE <key> <ttl> :表示将键 key 的生存时间设置为 ttl 秒. ② ...

  6. 高性能分布式缓存redis(持久化原理 安全策略 过期删除内存淘汰策略 性能压测 高可用 Redis Cluster)

    redis redis(持久化原理 安全策略 过期删除&内存淘汰策略 性能压测 高可用 Redis Cluster) 1. 持久化原理 1.1 持久化流程(落盘) 1.2 RDB详解 1.2. ...

  7. 【2020尚硅谷Java大厂面试题第三季 04】Redis 9种数据类型使用场景,分布式锁演变步骤,lua脚本,redis事务,Redisson,Redis内存占用,删除策略,内存淘汰策略,手写LRU

    1.安装redis6.0.8 2023 02 02 为:redis-7.0.8.tar.gz 2.redis传统五大数据类型的落地应用 3.知道分布式锁吗?有哪些实现方案?你谈谈对redis分布式锁的 ...

  8. redistemplate.opsforhash设置过期时间_Redis详解(十一)------ 过期删除策略和内存淘汰策略...

    大家好,我是可乐,一个专注原创,乐于分享的程序猿. 本系列教程持续更新,可以微信搜索「 IT可乐 」第一时间阅读.回复<电子书>有我为大家特别筛选的海量免费书籍资料 在介绍这篇文章之前,我 ...

  9. 【带你重拾Redis】Redis过期策略 和 内存淘汰策略(key回收)

    过期策略 我们set key的时候,都可以给一个expire time,就是过期时间,指定这个key比如说只能存活1个小时,我们自己可以指定缓存到期就失效. 如果假设你设置一个一批key只能存活1个小 ...

最新文章

  1. 002:用Python设计第一个游戏
  2. jQuery通过ajax方法获取json数据不执行success的原因及解决方法
  3. 初识github之注册和基本概念
  4. 关于 Android 和 iOS 流畅度的一切
  5. freemarker跳出循环
  6. San 3.7.4 发布,百度开源的 MVVM 组件框架
  7. R语言之数据分析高级方法「时间序列」
  8. jquery 弹出层
  9. Tomcat原理简述
  10. 2022年天猫618超级红包玩法入口
  11. FINAUNCE金融业增速反弹信贷投放创新高叠加股市回暖
  12. 双光子荧光成像_为什么双光子成像如此重要?
  13. 《scikit-learn机器学习实战》简介
  14. 金融李素梅教授的《银行管理研究》课(1)
  15. 免费的Office办公套件LibreOffice for Mac
  16. 【Hexo】选择更高级的Markdown渲染器
  17. 基于Python监测键盘输入并发出声音的坤音键盘
  18. 电脑系统重装下载的系统在哪找到
  19. JavaWeb-05 jQuery
  20. unity3d游戏是怎么开发制作出来的?

热门文章

  1. web前端开发和岗位职责
  2. iOS OC语言(二) 类
  3. N1盒子单臂路由设置
  4. PHP使用 Redis 实现消息队列
  5. AI模型训练部署:在CSK6芯片上运行AI模型
  6. SQL 中条件、循环语句的应用整理
  7. sql for 循环
  8. 浅谈人工智能的伦理问题
  9. 微信小程序--wx-charts图表插件使用教程
  10. 无线android auto车机,AAWireless适配器为Android Auto车机带来无线配对体验