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

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

如果问到:假如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.dtcms.com/a/76218.html

相关文章:

  • [Nowruz 1404] 2025 Crypto/PWN部分
  • 三月九次前端面试复盘:当场景题成为通关密钥
  • 使用 EchoAPI 实现 API 断言的全面指南
  • vulhub/Billu_b0x靶机----练习攻略
  • c盘清理宝藏小工具
  • 使用Trainer传入自定义的compute_metrics函数时,oom报错
  • Diffusion Transformers (DiTs) - 用Transformer革新Diffusion模型
  • 构建高可靠NFS存储:自动化挂载保障机制的设计与优势
  • 【Vuex:在带命名空间的模块内访问全局内容】
  • Docker运行postgreSQL,由于异常启动或者退出后,提示could not locate a valid checkpoint record
  • JS—事件委托:3分钟掌握事件委托
  • vlan初学的总结
  • NLP高频面试题(四)——BN和LN的区别与联系,为什么attention要用LN
  • Visual Studio2022 中的键盘注释快捷方式
  • 多线程(四)----线程安全
  • 力扣刷题994. 腐烂的橘子
  • 比特币牛市还在不在
  • 「Wi-Fi学习」节能模式
  • Java常用类
  • Android第四次面试总结(基础算法篇)
  • LeetCode-274.H 指数
  • C#进阶(多线程相关)
  • SMT贴片机销售实战技巧解析
  • Python高级:GIL、C扩展与分布式系统深度解析
  • 汽车机械钥匙升级一键启动的优点
  • CentOS下安装ElasticSearch(日志分析)
  • 项目实战:基于瑞萨RA6M5构建多节点OTA升级-创建系统最小框架<三>
  • 【SpringMVC】深入解析基于Spring MVC与AJAX的用户登录全流程——参数校验、Session管理、前后端交互与安全实践
  • CXSMILES介绍
  • 【Linux】浅谈环境变量和进程地址空间