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

redis的过期策略以及内存淘汰机制

redis采用的是定期删除+惰性删除策略。 为什么不用定时删除策略? 定时删除,用一个定时器来负责监视key,过期则自动删除。虽然内存及时释放,但是十分消耗CPU资源。在大并发请求下,CPU要
将时间应用在处理请求,而不是删除key,因此没有采用这一策略. 定期删除+惰性删除是如何工作的
呢?

定期删除: redis默认每个100ms检查,是否有过期的key,有过期key则删除。需要说明的是,redis不是每个100ms将所有的key检查一次,而是随机抽取进行检查(如果每隔100ms,全部key进行检查,redis岂不是卡死)。因此,如果只采用定期删除策略,会导致很多key到时间没有删除。 于是,惰性删除派上用场。也就是说在你获取某个key的时候,redis会检查一下,这个key如果设置了过期时间那么是否过期了?如果过期了此时就会删除。 采用定期删除+惰性删除就没其他问题了么?不是的,如果定期删除没删除key。然后你也没即时去请求key,也就是说惰性删除也没生效。这样,redis的内存会越来越高。那么就应该采用内存淘汰机制。 在redis.conf中有一行配置

maxmemory-policy volatile-lru

该配置就是配内存淘汰策略的:

volatile-lru: 从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰

volatile-ttl: 从 已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰

volatile-random: 从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰

allkeys-lru: 从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰

allkeys-random: 从数据集(server.db[i].dict)中任意选择数据淘汰

no-enviction(驱逐): 禁止驱逐数据,新写入操作会报错 ps:如果没有设置 expire 的key, 不满足先决条件(prerequisites); 那么 volatile-lru, volatile-random 和 volatile-ttl 策略的行为, 和 noeviction(不删除) 基本上一致。

相关文章:

redis的过期策略以及内存淘汰机制

redis采用的是定期删除惰性删除策略。 为什么不用定时删除策略? 定时删除,用一个定时器来负责监视key,过期则自动删除。虽然内存及时释放,但是十分消耗CPU资源。在大并发请求下,CPU要 将时间应用在处理请求,而不是删除key,因此没有采用这一策…...

华为数通方向HCIP-DataCom H12-821题库(多选题:161-180)

第161题 以下关于IPv6优势的描述,正确的是哪些项? A、底层自身携带安全特性 B、加入了对自动配置地址的支持,能够无状态自动配置地址 C、路由表相比IPv4会更大,寻址更加精确 D、头部格式灵活,具有多个扩展头 【参考答案】ABD 【答案解析】 第162题 在OSPF视图下使用Filt…...

网络通信与网络协议

网络编程是指利用计算机网络实现程序之间通信的一种编程方式。在网络编程中,程序需要通过网络协议(如 TCP/IP)来进行通信,以实现不同计算机之间的数据传输和共享。在网络编程中,通常有三个基本要素 IP 地址:定位网络中某台计算机端口号port:定…...

【矩阵】240. 搜索二维矩阵 II【中等】

搜索二维矩阵 II 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。 示例 1: 输入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22…...

详解uniapp的生命周期

这篇文章主要介绍了 uniapp 的生命周期, 应用生命周期是指应用程序从启动到关闭的整个过程,包括应用程序的启动、前后台切换、退出等, 需要的朋友可以参考下 Uniapp 作为一款跨平台应用开发框架,具有丰富的生命周期,以下是 Uniapp 的生命周期…...

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:PluginComponent)

提供外部应用组件嵌入式显示功能,即外部应用提供的UI可在本应用内显示。 说明: 该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。本组件为系统接口。 子组件 无 接口 PluginComponent(value:…...

mysql笔记:15. 事务和锁

文章目录 一、事务概述二、事务基本操作三、事务保存点四、事务的隔离级别1. READ UNCOMMITTED设置事务的隔离级别 2. READ COMMITTED3. REPEATABLE READ4. SERIALIZABLE 五、MySQL的锁InnoDB的锁类型1. InnoDB的行级锁2. InnoDB的表级锁 死锁 在开发过程中,我们经常…...

Learn OpenGL 15 面剔除

面剔除 尝试在脑子中想象一个3D立方体,数数你从任意方向最多能同时看到几个面。如果你的想象力不是过于丰富了,你应该能得出最大的面数是3。你可以从任意位置和任意方向看向这个球体,但你永远不能看到3个以上的面。所以我们为什么要浪费时间…...

EndeavourOs(arch系)安装sunpinyin输入法(ibus) + 迅雷(xunlei-bin)

输入法 yay -S ibus yay -S ibus-libpinyin yay -S ibus-sunpinyin yay -Q ibus ibus-libpinyin ibus-sunpinyin #验证 # 注销然后打开ibus config... # 在Input Method 添加Chinese->SunPinYin # 使用Ctrl Space, 默认Super Space, 请自行修改 # 再次注销,开…...

Spring Cache框架的介绍和使用

Spring Cache spring cache是一个框架,实现类基于注解的缓存功能,只需要简单的加一个注解,就能实现缓存功能,大大简化我们在业务中操作缓存的代码。 spring cache只是提供了一层抽象,底层可以切换不同的cache实现&am…...

perl 用 XML::Parser 解析 XML文件,访问哈希

本篇我们会看到 Perl 成为知名编程语言的关键特色--哈希 hash(2000年以前叫:关联数组)。 在Perl 中,可以使用各种模块和函数来解析 XML元素和属性。其中,最古老的模块是 XML::Parser,它提供了一组完整的X…...

MATLAB中的矩阵和数组,它们之间有什么区别?

MATLAB中的矩阵和数组:概念、区别与联系 MATLAB(Matrix Laboratory,矩阵实验室)作为一款强大的数学软件,广泛应用于工程、科学、数学、计算机科学等领域。在MATLAB中,矩阵和数组是两个核心概念&#xff0c…...

python爬虫实战——抖音

目录 1、分析主页作品列表标签结构 2、进入作品页前 判断作品是视频作品还是图文作品 3、进入视频作品页面,获取视频 4、进入图文作品页面,获取图片 5、完整参考代码 6、获取全部作品的一种方法 本文主要使用 selenium.webdriver(Firef…...

Day1-力扣刷题学习打卡

1、两数之和 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以…...

C语言的位操作与位字段

C语言中的位操作允许程序员直接在整型变量的单个位或位组上进行操作。这种操作在许多低级编程任务中非常有用,尤其是在嵌入式系统编程中,如硬件操作、设备驱动及性能优化等场景。位操作主要使用以下几种位操作符: & (按位与&a…...

应用实战|从头开始开发记账本1:如何获取BaaS服务

本期视频开始,我们将通过一系列教程,来详细讲解MemFire Cloud BaaS服务的使用方法,通过这一系列的教程,你将学会如何只使用前端技术完成一个生产级应用的开发和上线。 以下是本期视频主要章节: BaaS服务介绍用户如何…...

el-form v-for循环列表的表单如何校验

1、普通的表单校验直接在最外层<el-form> :model"数据" :rules"规则" &#xff0c;再在<el-form-item>层设置prop值与model里数据定义的key保持一致即可。 <el-form-item label"名称" prop"ruleName" :rules"[{r…...

笔记:《NCT全国青少年编程能力等级测试教程Python语言编程三级》

NCT全国青少年编程能力等级测试教程Python语言编程三级 ISBN:9787302574859 绪论 专题1 序列和元组 考查方向 考点清单 考点1 组合数据类型 序列类型(字符串、列表、元组);集合类型;映射类型。 考点2 元组类型 (一)元组类型…...

地平线旭日x3派部署yolov5--全流程

地平线旭日x3派部署yolov5--全流程 前言一、深度学习环境安装二、安装docker三、部署3.1、安装工具链镜像3.2、配置天工开物OpenExplorer工具包3.3、创建深度学习虚拟空间&#xff0c;安装依赖&#xff1a;3.4、下载yolov5项目源码并运行3.5、pytorch的pt模型文件转onnx3.6、最…...

【Golang星辰图】Go语言云计算SDK全攻略:深入Go云存储SDK实践

Go语言云计算和存储SDK全面指南 前言 在当今数字化时代&#xff0c;云计算和存储服务扮演着至关重要的角色&#xff0c;为应用程序提供高效、可靠的基础设施支持。本文将介绍几种流行的Go语言SDK&#xff0c;帮助开发者与AWS、Google Cloud、Azure、MinIO、 阿里云和腾讯云等…...

河海大学819传热学考研复试备考资料(新能源学院·清洁能源技术专硕专用)

温馨提示&#xff1a;文末有联系方式【权威备考】河海大学819传热学复试专属资料包 本资料由2025届成功录取河海大学新能源学院清洁能源技术专业硕士的学长亲自整理&#xff0c;初试与复试综合成绩稳居前三&#xff0c;内容高度贴合最新考核趋势。【高效提分利器】核心资料全覆…...

LabVIEW视觉项目效率翻倍:海康相机+OpenCV/NI Vision混合编程实战

LabVIEW视觉项目效率翻倍&#xff1a;海康相机OpenCV/NI Vision混合编程实战 在工业自动化领域&#xff0c;视觉检测系统的开发效率往往决定了产品上市时间。作为一名长期奋战在产线调试一线的工程师&#xff0c;我发现许多同行在使用LabVIEW进行视觉项目开发时&#xff0c;都会…...

G-Helper完整指南:三步掌握华硕笔记本性能优化神器

G-Helper完整指南&#xff1a;三步掌握华硕笔记本性能优化神器 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar,…...

OpenClaw新手避坑指南:Phi-3-vision-128k-instruct部署中的5个常见错误

OpenClaw新手避坑指南&#xff1a;Phi-3-vision-128k-instruct部署中的5个常见错误 1. 镜像版本不匹配导致的初始化失败 上周我在本地尝试部署Phi-3-vision-128k-instruct时&#xff0c;遇到了第一个拦路虎——系统提示"CUDA version mismatch"。这个错误看似简单&…...

如何用3步解锁百度网盘SVIP特权:macOS逆向工程的实践指南

如何用3步解锁百度网盘SVIP特权&#xff1a;macOS逆向工程的实践指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 你是否曾在macOS上使用百度网盘下…...

CodeSys随机数生成实战:从GPS通信验证到实验作业的完整代码解析

CodeSys随机数生成实战&#xff1a;从GPS通信验证到实验作业的完整代码解析 在工业自动化领域&#xff0c;随机数生成看似是个小众需求&#xff0c;直到你遇到需要模拟设备故障、生成验证码或创建随机测试场景时才会发现它的重要性。CodeSys作为工业控制领域的"瑞士军刀&…...

L-SHADE算法实战:如何用线性种群缩减提升优化性能(附Python代码)

L-SHADE算法实战&#xff1a;如何用线性种群缩减提升优化性能&#xff08;附Python代码&#xff09; 在优化算法的世界里&#xff0c;差分进化&#xff08;Differential Evolution, DE&#xff09;一直以其简单高效著称。但传统DE算法在面对高维复杂问题时&#xff0c;常常陷入…...

改进A星算法融合DWA算法路径规划、避障Matlab仿真(有参考文献)

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和…...

实战指南:利用快马平台为不同项目类型智能定制idea开发环境与工具链

今天想和大家分享一个实战经验&#xff1a;如何根据不同项目类型&#xff0c;快速定制专属的IDEA开发环境。作为开发者&#xff0c;我们经常需要切换不同技术栈&#xff0c;每次手动安装插件、配置SDK的过程实在太费时间。最近发现用InsCode(快马)平台可以智能解决这个问题&…...

通义千问大模型+Flask:打造智能PDF批量解析与问答系统

1. 为什么需要智能PDF解析与问答系统 每天都有海量的PDF文档在各个行业流转&#xff0c;从合同协议到财务报表&#xff0c;从学术论文到产品手册。传统的人工阅读和提取方式效率低下&#xff0c;容易出错。我曾经帮一家律师事务所处理过上千份合同&#xff0c;光是找出所有涉及…...