Redis-数据过期策略

文章目录

更多相关内容可查看

Redis数据持久化策略的作用是什么?

Redis数据过期策略是指在Redis中设置数据的过期时间,并在数据过期时自动从数据库中删除该数据的一种机制。这种机制的作用主要体现在以下几个方面:

  • 缓存管理:Redis经常被用作缓存系统,用于存储频繁访问但不常变化的数据,如页面缓存、会话数据等。通过设置数据过期时间,可以自动清理过期的缓存数据,避免缓存数据占用过多内存空间,保持系统的性能稳定。
  • 节省内存空间:Redis是一个内存数据库,内存资源有限。通过设置数据的过期时间,可以自动释放过期的数据占用的内存空间,保证内存资源的有效利用。
  • 防止数据过期:在一些场景中,数据可能会因为不再被访问而过期,但在过期前又被重新访问到。为了避免这种情况,Redis提供了惰性删除和定期删除两种过期策略。惰性删除会在获取数据时检查数据是否过期,定期删除则是通过定时任务扫描数据库,删除过期数据。这样可以保证数据在被访问时不会过期。
  • 控制数据生命周期:通过设置数据的过期时间,可以控制数据的生命周期,使数据在一定时间内有效,从而管理数据的时效性和有效性。
  • 降低系统复杂度:使用数据过期策略可以简化系统逻辑,避免手动管理数据的过期与清理,减少开发和维护成本。

Redis的数据过期策略有哪些?

惰性删除

惰性删除 :只会在取出 key 的时候才对数据进行过期检查。这样对 CPU 最友好,但是可能会造成太多过期 key 没有被删除。

数据到达过期时间,不做处理。等下次访问该数据时,我们需要判断

如果未过期,返回数据

发现已过期,删除,返回nil

定期删除

定期删除 : 每隔一段时间抽取一批 key 执行删除过期 key 操作。并且,Redis 底层会通过限制删除操作执行的时长和频率来减少删除操作对 CPU 时间的影响。

默认情况下 Redis 定期检查的频率是每秒扫描 10 次,用于定期清除过期键。当然此值还可以通过配置文件进行设置,在 redis.conf 中修改配置"hz"即可,默认的值为hz 10

定期删除的扫描并不是遍历所有的键值对,这样的话比较费时且太消耗系统资源。Redis 服务器采用的是随机抽取形式,每次从过期字典中,取出 20 个键进行过期检测,过期字典中存储的是所有设置了过期时间的键值对。如果这批随机检查的数据中有 25% 的比例过期,那么会再抽取 20 个随机键值进行检测和删除,并且会循环执行这个流程,直到抽取的这批数据中过期键值小于 25%,此次检测才算完成

Redis 服务器为了保证过期删除策略不会导致线程卡死,会给过期扫描增加了最大执行时间为 25ms
注:定期删除对内存更加友好,惰性删除对 CPU 更加友好。两者各有千秋,所以 Redis 采用的是 定期删除+惰性删除

相关推荐
疯狂打码的少年10 小时前
【数据库技术】关系模型基本概念(关系/属性/元组/键)
java·服务器·数据库·笔记
Mr数据杨12 小时前
【Codex】用学生入学评估模块建立新生能力画像
android·java·javascript·django·codex·项目开发
普马萨特12 小时前
实体与位置关系的数据从哪里来:获取、治理与仍待解决的问题
网络·数据库
2601_9620562312 小时前
Spring Boot 入门 与 无法解析符号 springframework 的解决
java·spring boot·后端
醉颜凉12 小时前
MySQL 8 忘记 root 密码?这两种方法帮你轻松解决
数据库·mysql·adb
Thomas214312 小时前
Java scala 数组 链表
java·链表·scala
亚历克斯神13 小时前
低代码与 AI 的融合趋势——从可视化搭建到自然语言生成应用
java·spring·微服务
RestCloud13 小时前
集成链路监控体系搭建:接口调用、数据流转与异常告警全覆盖
数据库·数据安全·ipaas·api管理·数据监控·集成平台·api 治理
学长毕业设计13 小时前
基于SpringBoot的瑜伽馆网站的设计与实现(源码+文档+讲解视频)
java·spring boot·后端
一嘴一个橘子13 小时前
nginx 常用命令(在 nginx 目录下执行)
java