【Redis】Redis的数据删除(过期)策略,数据淘汰策略。

devtools/2025/3/19 12:14:54/

如果问到:假如Redis的key过期之后,会立即删除吗?
其实就是想问数据删除(过期)策略。

如果面试官问到:如果缓存过多,内存是有限的,内存被占满了怎么办?
其实就是问:数据的淘汰策略。

1.Redis的数据删除(过期)策略:

当Redis的key过期后,并不会立即删除。Redis使用以下两种策略来处理过期key的删除:

(1)惰性删除:

  • 原理: 当客户端尝试访问一个key时,Redis会检查该key是否过期。如果过期,则立即删除。
  • 优点: 节省CPU资源,只在访问时检查过期。
  • 缺点: 如果过期key长时间未被访问,会占用内存。

(2)定期删除:

  • 原理: Redis会定期随机抽取一部分key进行检查,删除其中过期的key。
  • 优点: 减少内存占用,避免过期key长时间未被删除。
  • 缺点: 可能会占用一定的CPU资源。

总结:

  • Redis的过期key删除是惰性删除+定期删除的结合。
  • 惰性删除确保访问时key是最新的,定期删除减少内存占用。

2.Redis的数据淘汰策略:

当Redis的内存被占满时,会根据配置的淘汰策略删除部分key以释放空间。以下几种淘汰策略:

(1)noeviction:

  • 原理: 当内存不足时,新写入操作会报错,不删除任何key
  • 适用场景:数据一致性要求极高的场景。

(2)allkeys-lru:

  • 原理: 从所有key中删除 最近最少使用(Least Recently Used LRU)的key。
  • 适用场景:适合大多数场景,优先保留最近使用的key。

(3)volatile-lru:

  • 原理: 从设置了过期时间的key中删除 最近最少使用的key。
  • 适用场景: 只淘汰过期key,适合需要保留永久数据的场景。

(4)allkeys-random:

  • 原理: 从所有key中随机删除key。
  • 适用场景: 适合key访问模式随机的场景。

(5)volatile-random:

  • 原理: 从设置了过期时间的key中随机删除key。
  • 适用场景: 只淘汰过期key,适合需要保留永久数据的场景。

(6)volatile-ttl:

  • 原理: 从设置了过期时间的key中删除剩余生存时间(TTL)最短的key。
  • 适用场景: 优先淘汰即将过期的key。

总结:

  • 常用策略:allkeys-lruvolatile-lru是最常用的淘汰策略。

3.应用场景:

3.1场景1:缓存系统

  • 需求: 优先保留最近使用的数据。
  • 策略: 使用allkeys-lru

3.2场景2: 会话系统

  • 需求: 只淘汰过期回话数据。
  • 策略: 使用volatile-lruvolatile-ttl

3.3随机访问模式:

  • 需求: 数据访问模式随机。
  • 策略: 使用allkeys-random

4.总结:

请添加图片描述


http://www.ppmy.cn/devtools/168332.html

相关文章

中电金信25/3/18面前笔试(需求分析岗+数据开发岗)

部分相同题目在第二次数据开发岗中不做解析,本次解析来源于豆包AI,正确与否有待商榷,本文只提供一个速查与知识点的补充。 一、需求分析 第1题,单选题,Hadoop的核心组件包括HDFS和以下哪个? MapReduce Spark Storm…

android开发:组件事件汇总

在 Android 开发中,Java 文件中有许多组件事件可以处理用户交互。以下是一些常见的组件事件及其用途和示例: 1. 点击事件 (Click) 用于处理用户点击控件的操作。 示例代码: Button button findViewById(R.id.button); button.setOnClickL…

【GNN】GAT

消息传递 层数越多,聚合更多的消息

Mysql表的简单操作

🏝️专栏:Mysql_猫咪-9527的博客-CSDN博客 🌅主页:猫咪-9527-CSDN博客 “欲穷千里目,更上一层楼。会当凌绝顶,一览众山小。” 目录 3.1 创建表 3.2 查看表结构 3.3 修改表 1. 添加字段 2. 修改字段 3…

202年充电计划——自学手册 网络安全(黑客技术)

🤟 基于入门网络安全/黑客打造的:👉黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“…

Elixir语言的计算机网络

Elixir语言在计算机网络中的应用 随着互联网的发展和我们生活的数字化,计算机网络变得愈加复杂。为了适应这种复杂性,程序员需要寻找一种既高效又易于开发的编程语言。Elixir语言,基于Erlang VM(BEAM),以其…

【Linux篇】:进程抢占式调度的量子纠缠--状态,优先级与上下文切换的三角博弈

✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:Linux篇–CSDN博客 文章目录 一.进程状态1.一般的操作系统学科进程状态2.Linux中的进程状态…

传奇怪物素材 8方向高清怪物 PNG格式 游戏怪物 11组

传奇怪物素材 8方向高清怪物 PNG格式 游戏怪物 11组 链接: https://pan.baidu.com/s/1jRnex46xReq9m7X6hxCrOA 提取码: vw35 备用下载地址:http://pan.1234f.com:5212/s/K1MIV 电子文档:https://1234f.com/sj/GitHub/sucai/20250318/1274.html