Redis 过期Key的淘汰策略

从波形图到参数调优:一次无感BLDC电机启动失败的深度解析 本文深入解析无感BLDC电机启动失败案例,通过波形分析揭示参数不匹配和IPM保护机制触发等关键问题。详细探讨了过零点检测、PWM周期设置及强拖参数调优的底层逻辑,并分享IPM模块保护机制与实战调优技巧,最终实现99.98%的启动成功率。 阅读详情
  • 过期key设置

创建一个key value的时候设置过期key
set key1 value1 EX 60
设置已经存在的key的过期时间
expire key 60
#毫秒
PEXPIREAT key milliseconds-timestamp 
查看过期时间
ttl key

  • 清理策略

访问key时候 执行expireIfNeeded(db,key) 判断是否过期并进行淘汰
CPU空闲在定期serverCron任务中 逐出部分过期key
每次事件循环aemain执行的时候,会执行beforeSleep逐出部分过期的key

  • 过期数据清理算法

1,redis 配置项hz定义了serverCron任务的执行周期,默认是10,即CPU空闲时每秒执行10次
2, 每次过期key清理的时间不超过CPU时间的25%,即hz=1 ,则一次清理时间最大为250ms,若hz=10,则一次清理时间最大为25ms
3, 清理时依次遍历所有的db
4, 从db中随机取20个key,判断是否过期,如果过期,则逐出
5, 如果5个以上过期,则重复上一步骤,否则遍历下一个db
6, 在清理过程中,如果达到25%CPU时间,则退出清理过程

  • 数据逐出时机

redis 在处理命令之前进行内存的检查及淘汰,判断是否设置了maxmemory,如果有就执行freememoryIfNeeded函数

  • 数据淘汰算法

1, volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
2, volatile-ttl: 从已设置过期时间的数据集(server.db[i].expires)中挑选 要过期的数据淘汰
3, volatile-random: 从已设置过期时间的数据集(server.db[i].expires) 中任意选择数据淘汰
4, allkey-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
5, allkey- random: 从数据集(server.db[i].dict)中任意选择数据淘汰
6, no-enviction(驱逐):禁止驱逐数据 拒绝所有写入操作并返回客户端错误信息"(error) OOM command not allowed when used memory",此时Redis只响应读操作
7,Redis 4.0 allkey-lfu 对全部key采用LFU淘汰算法。 驱逐使用频率最少的键
8, Redis 4.0 volatile-lfu 对有过期时间的key采用LFU淘汰算法 , 驱逐使用频率最少的键
在LFU算法中,可以为每个key维护一个计数器。每次key被访问的时候,计数器增大。计数器越大,可以约等于访问越频繁
./redis-cli --hotkeys
OBJECT FREQ key

  • 实践

1,不要放垃圾数据,及时清理无用数据
实验数据和下线业务数据及时删除。
2, key尽量都设置过期时间
对具有时效性的key设置过期时间,通过redis自身的过期key清理策略来降低过期key对于内存的占用,同时对于能够减少业务的麻烦不需要定期手动清理。
3, 单key不要过大
key过大会导致网络传输延迟比较大,需要分配的输出缓冲区也比较大,在定期清理的时候也容易造成比较高的延迟,最好能通过业务拆分,数据压缩等方式避免这种过大的key的产生。
4, 不同业务如果公用一个业务的话,最好使用不同逻辑db分开
从上面的分析可以看出,redis的过期key清理策略和强制淘汰策略都会遍历各个db,将key分布在不同的db有助于过期key的及时清理,另外不同业务使用不同db有助于问题排查和无用数据的及时下线。

视觉辅助RIS波束追踪:用摄像头“看见”用户,实现毫秒级波束对准 在无线通信领域,波束成形技术是提升高频段信号覆盖与质量的核心手段,其原理是通过调整天线阵列的相位,使信号能量在特定方向相干叠加,形成高增益定向波束。这项技术的价值在于能有效克服高频信号路径损耗大、穿透性差的瓶颈,广泛应用于5G/6G、毫米波通信及室内定位等场景。然而,传统波束追踪依赖信道估计或波束扫描,存在训练开销大、实时性差的问题。本文聚焦于一种创新解决方案:将计算机视觉与可重构智能表面(RIS)相结合。通过摄像头直接感知用户位置,并利用RIS快速重构反射波束方向,实现了近乎零开销、毫秒级延迟的波束追踪, 阅读详情

相关推荐

实战解析:如何用Python逆向破解FastMoss的TikTok数据加密签名(附完整代码)

本文详细解析了如何用Python逆向破解FastMoss平台的TikTok数据加密签名机制,包括MD5加密算法和JS逆向分析。通过完整的Python代码示例,帮助开发者理解签名生成原理并实现自动化请求,提升数据获取能力。

weixin_30955617的博客 561

Redis大Key导致性能下降及处理

1.什么是大key Redis是一个key,value数据库。大key即Key存储的value非常大。当value为哈希表、集合、有序集或链表时指存储的元素过多(上万)。当value为字符串时一般指单个字符串超过1M。也包括Key数量极多的情况,例如key数量达到千万上亿的规模。 2.大key导致性能下降的原因 大key导致性能下降redis的结构相关,首先redis是一个key,value数据库...

Revivedsun的专栏 2万+

ZED2双目相机运行VINS-FUSION初试

基于ZED2运行VINS-MONO的经验,在运行VINS-FUSION前有几点tips想跟大家分享,应该能在运行的过程中避免一些踩坑吧。 TIPs 1)关于zed2标定 开始使用Kalibr进行相机单目/双目及联合标定,虽然重投影误差最高也就5个像素,但实际使用效果却并不好,故建议大家相机内参还是从ZED2相机发布出的topic获取或可尝试/usr/local/zed/settings文件下的参数文档 另,启动ZED2.launch的时候,会有一个相机(一般是左目)和IMU的轴系转换关系Camera-IMU

xiaojinger_123的博客 5357

Redis性能瓶颈揭秘:如何优化大key问题?

对于大Key的操作,如读取、写入、删除等,都会消耗更多的CPU时间和内存资源,进一步降低系统性能。启用Redis的内存淘汰策略,例如LRU(Least Recently Used,最近最少使用),以便在内存不足时自动淘汰最近最少使用的数据,防止大Key长时间占用内存。没有固定的判别标准,通常认为字符串类型的key对应的value值占用空间大于1M,或者集合类型的k元素数量超过1万个,就算是大key。为每个key设置过期时间,并设置合理的过期时间,以便在数据失效后自动清理,避免长时间累积的大Key问题。

weixin_44837153的博客 1047

PostgreSQL数据库全攻略:从入门到精通

本文是一份PostgreSQL数据库综合指南,涵盖安装配置、基础操作和高级管理。主要内容包括:1) PostgreSQL简介与各平台安装方法;2) 数据库基本操作,如创建数据库/表、CRUD操作、用户权限管理;3) 高级功能包括索引优化、事务控制、视图、存储过程、触发器和扩展模块;4) 数据库管理维护,涉及配置调优、备份恢复、性能监控和日常维护;5) 安全设置与高可用方案。指南提供了从入门到进阶的实用知识,强调结合官方文档进行深入学习,帮助用户高效使用这一功能强大的开源关系型数据库系统。

索大神的博客 1970

R语言笔记三:矩阵、数组、列表和数据框

1.矩阵        矩阵是二维的,需要有行和列。向量是一维的。        在R软件中,矩阵是有维数的向量,这里的矩阵元素可以是数值型、字符型或者逻辑型,但是每个元素必须拥有相同的模式,这个和向量一致。 (1)创建矩阵: m <- matrix(1:20,4,5) 行数和列数的分配必须满足分配条件。若分配的行列过大,分配的元素不足够,则报错。 m <-

weixin_44384631的博客 6211

Redis是如何淘汰key的?

淘汰原理 系统线上运行中,内存总是昂贵且有限的,在数据总量远大于 Redis 可用的内存总量时,为了最大限度的提升访问性能,Redis 中只能存放最新最热的有效数据。 当 key 过期后,或者 Redis 实际占用的内存超过阀值后,Redis 就会对 key 进行淘汰,删除过期的或者不活跃的 key,回收其内存,供新的 key 使用。Redis 的内存阀值是通过 maxmemory 设置的,而超过内存阀值后的淘汰策略,是通过 maxmemory-policy 设置的,具体的淘汰策略后面会进行详细介绍。R

tom的博客 783

PyQt5数据库开发3 6 QSqlQuery完整实操案例【图文详解】

PyQt5数据库开发3 6.1 QSqlQuery实操案例【多图详解】,本文有点长,主要每一个步骤都有对应的图文教程!!!

qq_53317005的博客 2964

Redis内存淘汰机制

Redis内存淘汰机制 内存淘汰机制就能保证在redis内存占用过高的时候,去进行内存淘汰,也就是删除一部分key,保证redis的内存占用率不会过高,那么它会淘汰哪些key呢?Redis目前共提供了8种内存淘汰策略,含Redis 4.0版本之后又新增的两种LFU模式:volatile-lfu和allkeys-lfu。 内存淘汰机制由redis.conf配置文件中的maxmemory-policy属性设置,没有配置时默认为no-eviction模式。 no-eviction 当内存不足以容纳新写入数

icehill的专栏 610

lvgl 9虚拟键盘控件 (lv_keyboard) 使用指南

是 LittlevGL 提供的一个虚拟键盘控件,适用于在图形界面中输入文本。与按钮矩阵类似,虚拟键盘预定义了多个键位布局,支持多种模式和自定义键位映射,能够满足各种文本输入需求。通过与文本区域 (Text Area) 的结合,键盘能够自动将输入的字符传送到指定区域。控件是 LittlevGL 提供的强大虚拟键盘解决方案,适用于任何需要文本输入的界面。通过预定义的键盘模式、自定义键位映射和文本区域自动填充功能,可以大大提升用户输入体验。无论是在嵌入式系统的用户界面中,还是在其他需要虚拟键盘的应用中,

m0_62599305的博客 2187

自动识别象棋棋子的OpenCV应用

在计算机视觉领域,OpenCV是一个广泛应用的开源计算机视觉库,它提供了丰富的图像处理和分析工具。本文将介绍如何使用OpenCV实现自动识别象棋棋子的功能,并提供相应的源代码。通过以上代码,我们可以实现对棋盘图像中棋子的自动识别。需要注意的是,以上代码只是一个简单的示例,实际应用中可能需要根据具体情况进行参数调整和算法优化,以获得更好的识别效果。函数利用预处理后的图像,寻找图像中的轮廓,并根据轮廓的面积筛选出可能的棋子轮廓,最后在原图像中提取棋子区域。在主程序中,我们读取输入图像,并调用。

WzisTypescript的博客 908

Redis的key淘汰方式和内存不足淘汰方式

Redis key过期策略Redis如何淘汰过期的keyRedis服务器实际使用的是惰性删除和定期删除两种策略:通过配合使用这两种删除策略,服务器可以很好的在合理使用CPU时间和避免浪费内存空间之间取得平衡。

2302_76363587的博客 550

ABAP 7.40 FOR 表达式与 REDUCE 构造运算符深度解析:从语法新特性到真实项目实践

ABAP 7.40引入了FOR和REDUCE表达式语法,使代码更简洁和函数式。FOR支持内表迭代和条件迭代,可配合VALUE构造新内表,替代传统LOOP。REDUCE用于归约运算,将多值折叠为单一结果,如求和、拼接等。这些新特性让ABAP更现代化,与SAP新架构协同更好,提升了开发效率和代码可读性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 321

redis 删除key过期 ,淘汰策略

淘汰策略 noeviction 不删除数据,将不能进行新的写入。扩容后恢复正常。 allkeys-lru 选择最近最少使用的key进行删除来保证可以写入新的数据。丢弃数据来换取可用性。 volatile-lru 从设置了过期时间的key中选择最近最少使用的key进行删除来保证新的写入,如果没有设置过期时间的key把容量占满了,同样将不能进行新的写入,扩容后恢复正常。 vol...

有趣的难受 2303

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Redis 过期 Key 删除策略与内存满时的淘汰策略

Redis通过惰性删除和定期删除相结合的方式管理过期键,惰性删除在访问时检查删除过期键,定期删除则周期性扫描并清理过期键。当内存达到上限时,Redis提供多种淘汰策略,包括noeviction(不淘汰)、allkeys-lru(全键LRU)、volatile-lru(过期键LRU)、allkeys-random(全键随机)、volatile-random(过期键随机)和volatile-ttl(淘汰最接近过期的键)。选择合适的策略需根据应用场景,如allkeys-lru适合缓存场景,volatile-ttl

码码哈哈的博客 980

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Redis 篇-深入了解 Redis 中的 RESP 通信协议与内存回收(过期 key 处理、内存淘汰策略)

删除完之后,再判断内存是否充足,如果还是不足,那么会接着循环来删除 key,如果达到充足的内存,则直接退出删除 key 的操作。若选择的删除策略为:TTL、LRU、LFU 这些策略,先创建一个池,用来存放准备删除的 key,在 Redis 数据库中从 0 直到 15 的数据库进行遍历抽样选择要放入池中的 key,默认每次抽样 5 个 key。如果当前内存不充足时,继续判断内存策略是否为默认 noeviction 策略,也就是即使内存满了,也不会执行删除 key 的操作,会发出错误信息。

小扳手 3508

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Redis 中key自动过期和内存淘汰策略

本文主要是介绍Redis中自动过期方法的使用以及Redis内存淘汰策略,包括对应的java使用方式、EXPIRE、PEXPIRE、SET命令的EX选项和PX选项、EXPIREAT、PEXPIREAT、TTL、PTTL

嘉禾嘉宁papa 6351

Redis.key过期&淘汰策略

一、Redis 内存过期策略 二、Redis 内存淘汰策略

software_tx的博客 377

Redis100篇 - Redis Key突然消失 过期+淘汰策略排查

Redis Key消失排查指南 问题现象: 写入的Redis Key突然消失 内存未满但Key被清除 业务出现缓存穿透 核心原因: Key过期机制: TTL到期自动删除 采用惰性删除+定期删除策略 常见错误:TTL单位混淆、覆盖写入未带TTL、主从同步延迟 内存淘汰机制: 当内存达到maxmemory时触发 8种淘汰策略(如allkeys-lru/volatile-ttl) 未设置maxmemory可能导致OOM 排查步骤: 检查Key的TTL:TTL key_name 确认淘汰策略:CONFIG GET

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

Redis内存淘汰策略及Key的过期策略

Redis内存淘汰策略及Key的过期策略淘汰策略过期策略 淘汰策略 设置了过期时间: volatile-lru: 淘汰最近最少使用的 volatile-random: 随机淘汰 volatile-ttl: 淘汰将要到期的 未设置过期时间: allkeys-random: 所有key中随机淘汰 allkeys-lru: 所有key中淘汰最近最少使用的 默认的淘汰策略: no-enviction: enviction译为嫉妒???? no? 不嫉妒? 啥子意思哦 新进来请求内存的直接报错.

Fall_enleaves的博客 273

Redis 持久化、key过期策略、淘汰策略

Redis 数据存在内存中,内存读取快但内存只是负责暂时性的存储,这理整理下Redis的持久化方案。 RDB : 在指定的时间间隔内将内存中的数据集快照写入磁盘。 快照数据存储在,默认 dump.rdb 文件中 触发方式: 手动触发:输入命令 save,该命令会阻塞当前Redis服务器,执行save命令期间,执行完成时候如果存在老的RDB文件,就把新的替代掉旧的。 手动触发:输入命令 bgsave ,redis系统调用函数fork(),创建一个子进程将数据集写入到一个临时 RDB 文件中,完.

何xiao树 725

Redis的key过期删除策略和key的淘汰策略

一.key的过期删除策略 ①定期删除:隔一段时间,就随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除。 定期删除有个弊端: 过期的key,但是没有被定期删除检测到,就会导致redis占用的内存空间越来越大,那么就有了惰性删除 ②惰性删除:redis get到的key,会判断一下该key是否过期了,如果过期了那么就删除这个key。 使用定期删除和惰性删除两种策略可以很好的利用cpu, 但是会...

bboy66的博客 494

Redis Key 过期策略以及内存淘汰策略

过期删除策略 删除到达过期时间的 Key,一般有以下几种实现 定时检查删除 为每个 Key 创建一个定时器,到达删除时间进行删除操作。 但是这样会占用大量 CPU 的资源去处理过期数据 惰性检查删除 访问 Key 的时候,再去判断 Key 是否过期,若已过期则删除。 对内存不太友好,若 Key 一直没访问,就永远不会删除 定期检查删除 隔一段时间,扫描 Redis 过期字典中的 Key,清除一部分过期的 Key。属于前两种方法的折中。 可以通过设置 hz 参数,控制定期删除的频率。 hz 10

菜鸟日常 349

redis的key过期策略+内存淘汰策略

总结关于redis面试点:redis key的过期策略+内存淘汰策略

u010772770的专栏 264

Redis之过期key的淘汰及缓存淘汰策略解读

我们都知道在Redis 所有的数据结构都可以设置过期时间,时间一到,就会自动删除。想象一下里面有一个专门删除过期数据的线程,如果数据已过期就立马删除。这个时候可以思考一下,会不会因为同一时间太多的 key 过期,以至于线程忙不过来。同时因为 Redis 是单线程的,删除的时间也会占用线程的处理时间,如果删除的太过于繁忙,会不会导致线上读写指令出现卡顿。

一个菜鸡的博客 371

Redis Key 过期后会立刻删除吗?过期删除与内存淘汰策略详解

Redis采用惰性删除和定期删除相结合的策略处理过期key:访问时检查是否过期(惰性删除),同时周期性抽样清理(定期删除)。内存不足时触发淘汰策略,包括8种选项如LRU、LFU等,默认noeviction会拒绝新写入。开发中推荐allkeys-lru保留热点数据,通过访问时间差自动淘汰冷数据。这种机制平衡了CPU开销与内存释放,确保高效缓存管理。

风雨未有归期的博客 544
上一篇: redis-faina 性能分析
下一篇: Redis 大Key 分析统计
取壳羊
博客等级 码龄15年 5粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值