Redis学习07-Redis的过期策略

Redis 过期策略

什么是过期策略

Redis 的过期策略用于管理设置了过期时间(TTL)的键,确保在键过期后能够被及时删除,从而释放内存

整体策略

Redis 采用的是定期删除+惰性删除的组合策略

1. 定期删除

  • 原理:周期性的从过期键集合中抽取一部分键,验证其过期时间,若已过期则删除。
  • 频率:默认每秒运行 10 次,即每 100ms 一次,可以通过修改配置更改频率
  • 优点:主动清理过期键,避免内存浪费,同时这种方式能保证抽取检查的过程足够快,避免长时间阻塞
  • 缺点:占用一定的 CPU 资源

为什么定期删除是周期性的抽取部分键?
因为redis是单线程的程序,主要的任务是处理每个命令的任务。
如果扫描过期key消耗的时间太多,就可能导致正常处理请求命令被阻塞(类似于在大量数据的背景下执行key *的效果)

2. 惰性删除

  • 原理:当键到达过期时间时,并不会立即被删除。而是当后续有请求访问该键时,Redis 服务器才会触发删除操作,并返回 nil
  • 优点:节省 CPU 资源,只在必要时检查。
  • 缺点:如果一个键已经过期并一直未被访问,它会持续占用内存,造成内存资源浪费

其他补充策略

为了弥补定期删除和惰性删除的不足,Redis 还提供了一系列 内存淘汰策略,用于在内存不足时主动淘汰部分键,保障服务器的正常运行。

Redis 内置淘汰策略

策略淘汰范围淘汰算法
noeviction无(默认策略)内存不足时写入操作报错
allkeys-lru所有键LRU
allkeys-random所有键随机淘汰
volatile-lru设置过期时间的键LRU(最近最少使用)
volatile-random设置过期时间的键随机淘汰
volatile-ttl设置过期时间的键优先淘汰较早过期的键(FIFO)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/93446.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/93446.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入解读c++(命名空间)

目录 1关于命名空间 1.1是什么 1.2解决了什么问题 2.命名空间的定义 2.2命名空间的嵌套定义 3命名空间的特点 3.1命名空间不会影响生命周期 3.2命名空间只能在全局域里定义,当然嵌套定义时例外。 3.3在不同文件中定义相同名称的命名空间 4.命名空间的使用 …

ClickHouse高性能实时分析数据库-高性能的模式设计

告别等待,秒级响应!这不只是教程,这是你驾驭PB级数据的超能力!我的ClickHouse视频课,凝练十年实战精华,从入门到精通,从单机到集群。点开它,让数据处理速度快到飞起,让你…

ArkTS懒加载LazyForEach的基本使用

在 ArkTS 的开发中,如果你要渲染一个很长的列表,比如商品列表、评论列表或者朋友圈动态,用传统的循环结构(比如 ForEach)很容易导致性能问题,尤其是加载慢、卡顿甚至内存暴涨。 这时候就要用到 懒加载渲染组…

动态规划:从入门到精通

本文全章节一共一万七千多字,详细介绍动态规划基础与进阶技巧,全篇以代码为主,认真读完理解,你对动态规划的理解一定会有一个质的飞跃。一、动态规划简介: 动态规划(Dynamic Programming,简称DP&…

八股训练营 40 天心得:一场结束,也是一场新的开始

八股训练营 40 天心得:一场结束,也是一场新的开始 感谢卡哥的训练营组织卡码笔记,对即将参加秋招的我们帮助了很多,感谢卡哥的开源代码随想录代码随想录 四十天前,我带着一颗不安却坚定的心,踏入了这场“…

STM32系统定时器(SysTick)详解:从原理到实战的精确延时与任务调度

前言:为什么SysTick是嵌入式开发的"瑞士军刀"? 在STM32开发中,我们经常需要精确的延时功能(如毫秒级延时控制LED闪烁)或周期性任务调度(如定时采集传感器数据)。实现这些功能的方式有…

【微信小程序】12、生物认证能力

1、生物认证 生物认证 是一种基于个体独特生理或行为特征进行身份验证的技术,广泛应用于安全、金融、医疗等领域。 小程序目前暂时只支持指纹识别认证。 2、查询支持的生物认证方式 获取本机支持的 SOTER 生物认证方式,文档 onLoad(options) {wx.checkIsSuppor…

高级机器学习

机器学习常见方法涉及方法:2.半监督学习3.无监督学习4.度量学习5.迁移学习6.多示例多标记学习7.在线学习8.元学习9.联邦学习10.强化学习11.概率图模型独立同分布独立指的是,样本集包括训练集测试集的任意两个样本之间都是不相关的。在表示样本的特征确定…

Chrome 提示 “此扩展程序不再受支持”(MacOS/Windows)

原因 最新 Chrome 使用 Manifest V3, 并在新版浏览器中 停止 V2 支持 处理方法 MacOS 新建一个后缀为 .mobileconfig 的文件, 内容参考 <?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN&…

C++20协程实战:高效网络库、手机终端、多媒体开发开发指南

基于C++协程和事件循环的网络库 以下是基于C++协程和事件循环的网络库实例,涵盖常见场景和功能实现。示例基于libuv、Boost.Asio或自定义事件循环,结合C++20协程(如std::coroutine)或其他协程库(如cppcoro)实现。 基础TCP服务器 #include <cppcoro/task.hpp> #in…

数据库4.0

索引 事务 JDBC~ 目录 一、MySQL索引 1.0 概述 2.0 相关操作 3.0 注意 4.0 索引背后的原理的理解 二、 事务 1.0 原子性 2.0 隔离性 (1)并发执行 (2) 出现的问题 3.0 使用 三、JDBC编程 1.0 概述 2.0 如何下载驱动包 3.0 jar如何引入到项目之中 4.0 jdbc…

HarmonyOS-ArkUI Web控件基础铺垫6--TCP协议- 流量控制算法与拥塞控制算法

HarmonyOS-ArkUI Web控件基础铺垫1-HTTP协议-数据包内容-CSDN博客 HarmonyOS-ArkUI Web控件基础铺垫2-DNS解析-CSDN博客 HarmonyOS-ArkUI Web控件基础铺垫3--TCP协议- 从规则本质到三次握手-CSDN博客 HarmonyOS-ArkUI Web控件基础铺垫4--TCP协议- 断联-四次挥手解析-CSDN博客…

Dify 从入门到精通(2/100 篇):Dify 的核心组件 —— 从节点到 RAG 管道

Dify 的核心组件&#xff1a;从节点到 RAG 管道 引言 在 Dify 博客系列&#xff1a;从入门到精通&#xff08;100 篇&#xff09; 的第一篇《Dify 究竟是什么&#xff1f;真能开启低代码 AI 应用开发的未来&#xff1f;》中&#xff0c;我们全面介绍了 Dify 的定位、核心特点…

在线培训、远程示教——医疗器械行业的直播解决方案

文章目录前言一、医疗器械直播应用的两大核心场景二、直播平台在医疗场景中的关键技术支持点三、典型功能实现原理总结前言 医疗器械行业对“培训”和“示教”的专业性要求极高&#xff0c;传统的线下模式常因时间、空间、人员成本等受限而效率低下。而随着高清低延迟视频技术…

Mqttnet的MqttClientTlsOptions.CertificateValidationHandler详解

MqttClientTlsOptions.CertificateValidationHandler 是 MQTTnet 库中用于自定义 TLS 证书验证逻辑的关键回调函数。在 MQTT 客户端与服务器建立 TLS 连接时&#xff0c;该回调允许你覆盖默认的证书验证流程&#xff0c;实现自定义的安全策略。核心作用当 MQTT 客户端通过 TLS …

【图像噪点消除】——图像预处理(OpenCV)

目录 1 均值滤波 2 方框滤波 3 高斯滤波 4 中值滤波 5 双边滤波 6 小结 噪声&#xff1a;图像中的一些干扰因素。通常是由于图像采集设备、传输信道等因素造成的&#xff0c;表现为图像中随机的亮度。常见的噪声类型有高斯噪声和椒盐噪声。高斯噪声是一种分布符合正态分布…

Vulnhub napping-1.0.1靶机渗透攻略详解

一、下载靶机 下载地址&#xff1a;https://download.vulnhub.com/napping/napping-1.0.1.ova 下载好后使用VM打开&#xff0c;将网络配置模式改为net&#xff0c;防止桥接其他主机干扰&#xff08;桥接Mac地址也可确定主机&#xff09;。 二、发现主机 使用nmap扫描没有相应…

Kubernetes自动扩容方案

Kubernetes 自动扩容可以概括为 “三层六类”&#xff1a;层级类型触发维度官方/社区方案一句话说明Pod 级HPACPU / 内存 / 自定义 / 外部指标内置副本数横向扩缩&#xff0c;最常用VPACPU / 内存社区组件单 Pod 资源竖向扩缩&#xff0c;不改副本数KEDA任意事件&#xff08;队…

linux命令ps的实际应用

ps&#xff08;Process Status&#xff09;是 ​Linux/Unix 系统中最核心的进程管理工具&#xff0c;用于实时抓取系统进程快照。它直接读取 /proc 文件系统&#xff0c;不持续监控进程&#xff08;区别于 top&#xff09;&#xff0c;但可通过参数组合实现精准进程诊断。下面从…

深入理解C语言:详解直接插入排序的实现与优化

目录 引言 一、直接插入排序的相关概念 1.1、基本概念 1.2、直接插入排序过程详解 二、代码实现 三、时间复杂度 四、希尔排序 4.1、希尔排序的陈述 4.2、代码实现 4.3、时间复杂度 结语 引言 在计算机科学的世界里&#xff0c;排序算法是基础且重要的组成部分。它们…