当前位置: 首页 > news >正文

redis的过期策略和内存淘汰机制(redis篇)

分享并学习一下redis的过期策略和内存淘汰机制

在平时的工作或者学习中,即便自己没有实打实的用过redis。但是能有对这方面的思考,再结合一些实际场景和理论,那么我相信自己或者你都会越来越厉害的。

 首先,我们需要认清为啥redis要有过期策略?

如果这个点大家都不太清楚的话,建议先去了解了解redis的作用和redis怎么诞生的。

其实,理解起来很简单,大家只要记住。redis是基于内存的就行了,内存存储有限,所以存储数据时,会有一个过期时间考虑。

可能有同学会遇到,在生产环境的 Redis 经常会丢掉一些数据,写进去了,过一会儿可能就没
了。我的天,同学,你问这个问题就说明 Redis 你就没用对啊。 Redis 是缓存,你给当存储了是
吧?
啥叫缓存?用内存当缓存。内存是无限的吗,内存是很宝贵而且是有限的,磁盘是廉价而且是
大量的。可能一台机器就几十个 G 的内存,但是可以有几个 T 的硬盘空间。 Redis 主要是基于
内存来进行高性能、高并发的读写操作的。
那么redis的过期策略的核心思想是啥呢?
Redis 过期策略是: 定期删除 + 惰性删除
所谓 定期删除 ,指的是 Redis 默认是每隔 100ms 就随机抽取一些设置了过期时间的 key ,检查 其是否过期,如果过期就删除。
假设 Redis 里放了 10w key ,都设置了过期时间,你每隔几百毫秒,就检查 10w key ,那 Redis 基本上就死了, cpu 负载会很高的,消耗在你的检查过期 key 上了。注意,这里可不是每 隔 100ms 就遍历所有的设置过期时间的 key ,那样就是一场性能上的 灾难 。实际上 Redis 是每 隔 100ms 随机抽取 一些 key 来检查和删除的。
惰性删除:即便key过期了,但是redis不做任何操作。当下次访问时,检查如果过期,那么redis就把key数据删除。
但是实际上这还是有问题的,如果定期删除漏掉了很多过期 key,然后你也没及时去查,也就没走惰性删除,此时会怎么样?如果大量过期 key 堆积在内存里,导致 Redis 内存块耗尽了, 咋整?那就走内存淘汰机制

 内存淘汰机制:

1、noeviction: 当内存不足以容纳新写入数据时,新写入操作会报错,这个一般没人用吧。

2、 allkeys-lru :当内存不足以容纳新写入数据时,在 键空间 中,移除最近最少使用的 key (这
个是 最常用 的)。
3、 allkeys-random :当内存不足以容纳新写入数据时,在 键空间 中,随机移除某个 key ,这个
一般没人用吧,为啥要随机,肯定是把最近最少使用的 key 给干掉啊。
4、 volatile-lru :当内存不足以容纳新写入数据时,在 设置了过期时间的键空间 中,移除最近
最少使用的 key (这个一般不太合适)。
5、 volatile-random :当内存不足以容纳新写入数据时,在 设置了过期时间的键空间 中, 随机
移除 某个 key
6、 volatile-ttl :当内存不足以容纳新写入数据时,在 设置了过期时间的键空间 中,有 更早过
期时间 key 优先移除。
我觉得工作中记住常用的即可,面试的话最好都了解一下。
http://www.lryc.cn/news/338007.html

相关文章:

  • Java中Runnable和Callable有什么不同?(企业真题)
  • 图机器学习导论
  • 地推网推拉新平台哪家强?一文清楚告诉你
  • Day:004(4) | Python爬虫:高效数据抓取的编程技术(数据解析)
  • (80) 只出现一次的数字(81)反转字符串
  • 基于拉格朗日分布算法的电动汽车充放电调度MATLAB程序
  • 【Linux 学习】进程优先级和命令行参数!
  • Git删除未跟踪的文件Untracked files
  • S7-1200PLC控制V90伺服通过FB284实现位置控制的方法
  • 2024年阿里云优惠券领取和使用方法
  • 工业项目中你连PLM系统都没见过?
  • 【QT入门】 Qt自定义控件与样式设计之QPushButton实现鼠标悬浮按钮弹出对话框
  • C盘变红怎么办?免费的系统C盘清理方法,C盘空间占用克星
  • 简述VPS 与 Apache 搭建网站方式对比:新手科普指南
  • js获取年月份
  • Promise常用方法及区别
  • pyqt 标题栏设置
  • 关于可视化大屏适配
  • 如何用composer来安装和配置LAMP环境?
  • 题目:学习使用按位取反~。
  • vue3第十六节(keep-alive 内置组件)
  • 跨域和跨域解决方案
  • 数学基础:矩阵
  • Windows完全卸载MySQL后再下载安装(附安装包)
  • 【央国企专场】——国家电网
  • linux 安装MySQL
  • 行云防水堡-打造企业数据安全新防线
  • 在ORACLE中找出某列非数字类型的数据
  • 建造者模式:构造复杂对象的艺术
  • Fence同步