redis过期机制及注意事项
按Redis官网说法:对于设置了过期时间的key,有2种清理机制,原文如下:
How Redis expires keys
Redis keys are expired in two ways: a passive way, and an active way. A key is passively expired simply when some client tries to access it, and the key is found to be timed out. Of course this is not enough as there are expired keys that will never be accessed again. These keys should be expired anyway, so periodically Redis tests a few keys at random among keys with an expire set. All the keys that are already expired are deleted from the keyspace. Specifically this is what Redis does 10 times per second: Test 20 random keys from the set of keys with an associated expire.
Delete all the keys found expired.
If more than 25% of keys were expired, start again from step 1.
This is a trivial probabilistic algorithm, basically the assumption is that our sample is representative of the whole key space, and we continue to expire until the percentage of keys that are likely to be expired is under 25% This means that at any given moment the maximum amount of keys already expired that are using memory is at max equal to max amount of write operations per second divided by 4.
一、被动清理:
当这个key被访问(比如:GET)时,如果发现已过期,redis会清理
二、主动清理:
2.1 大概1秒10次(即:约每100ms 执行1次)
2.2 随机抽20个key,清理20个key中的已过期项
2.3 如果清理的过期项>25%(即:>=5个),则继续上一步,随机抽下一批20个.
听上去比较合理,但是实际项目中,如果过期的key都是大key(即:占用内存很大),比例又在25%以下,又很少读取(即:被动清理、主动清理,都可能干不掉它),它们占用的内存释放会很慢,redis集群容量较少的情况下,随着key的不断写入,可能会把内存用完。
如何监控这种情况?可以用redis-rdb-tools 解析redis的rdb文件,会生成一个csv文件,里面会列出所有key的基本信息(包括key数据结构类型,大小,过期时间等)

将expiry列做下排序,如果发现该列的值,比当前时间还早,说明过期了,但是还没被清理。
有一个简单的解决办法:写一个job,定期在业务低谷时段(比如:每天凌晨),把所有大Key访问一遍即可。(即:强制触发被动删除,访问的意思,并非一定要GET,使用TTL ,EXISTS命令都可以)
redis过期机制及注意事项的更多相关文章
- redis过期机制
Redis会自己回收清理不用的数据吗? 如果能,那如何配置? 如果不能,如何防止数据累加后大量占用存储空间的问题? 之前一直接触Redis不是很深入,最近项目当中遇到一个需求场景,需要清空一些存放在R ...
- redis过期机制(官网文档总结)
官网地址:https://redis.io/commands/expire redis过期定义如下: Set a timeout on key. After the timeout has expir ...
- C# Redis 过期机制不生效问题
引用: https://ask.csdn.net/questions/358802 根据这里的代码写出监听事件后,事件并没有生效 在比对了多次配置文件后,终于发现了一点蹊跷,在配置中不能有与之相冲的配 ...
- redis过期机制及排行榜
redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略.redis 提供 6种数据淘汰策略: volatile-lru:从已设置过期时间的数据集(server.db[i].expire ...
- Redis的EXPIRE过期机制介绍
概述在实际开发过程中经常会遇到一些有时效性数据,比如限时优惠活动,缓存或者验证码之类的.过了一段时间就需要删除这些数据.在关系型数据库中一般都要增加一个字段记录数据的到期时间,然后周期性地检查过期数据 ...
- Redis过期--淘汰机制的解析和内存占用过高的解决方案
echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! Red ...
- redis多实例与主从同步及高级特性(数据过期机制,持久化存储)
redis多实例 创建redis的存储目录 vim /usr/local/redis/conf/redis.conf #修改redis的配置文件 dir /data/redis/ #将存储路径配置修改 ...
- redis持久化机制与过期策略
RDB的持久化策略 (快照方式,默认持久化方式): 按照规则定时将内存中的数据同步到磁盘,它有以下4个触发场景. 1. 自己配置的快照规则 vim /redis/bin/ redis.conf:按照 ...
- 使用Redis的五个注意事项(命名)
原文:使用Redis的五个注意事项 下面内容来源于Quora上的一个提问,问题是使用Redis需要避免的五个问题.而回答中超出了五个问题的范畴,描述了五个使用Redis的注意事项.如果你在使用或者考虑 ...
- redis 过期回调通知
redis 过期回调通知 背景 在使用redis的过程中,有时我们会遇到这种情景,当key过期的时候,我们需要去重新做一些操作,比如重新生成value等.之前,一直用的是添加一个celery定时任务, ...
随机推荐
- System.nanoTime() 方法
System.nanoTime() 方法 JDK1.5之后java中的计时给出了更精确的方法:System.nanoTime(),输出的精度是纳秒级别,这个给一些性能测试提供了更准确的参考. 注:1 ...
- 2024新版Axure RP大数据可视化大屏模板68套及通用组件+PSD文件
Axure RP数据可视化大屏模板及通用组件库2024新版重新制作了这套新的数据可视化大屏模板及通用组件库V2版.新版本相比于V1版内容更加丰富和全面,但依然秉承"敏捷易用"的制作 ...
- mssql sqlserver 使用xp_cmdShell运行时,报15281异常的处理办法
下文讲述 使用xp_cmdshell运行时,出现消息异常的操作方法,如下所示:实验环境:sql server 2008 R2 今天在sql查询管理器中运行xp_cmdshell命令时,出现以下错误现象 ...
- Excel 拼接为 SQL 并打包 exe
关于 Excel 拼接 sql 这个操作, 我已经整过好几篇了, 当然在工作中也是蛮常用的, 今天主要是来写个终篇, 彻底结束它, 然后将代码进行打包为 exe 这样的桌面小软件, 除了自己用, 也可 ...
- C++ condition_variable 条件变量
本节来了解下C++11 中关于条件变量(condition_variable) 的相关知识,这一部分的内容相信网上已经有了很多的分享,这里仅是对该部分内容学习的记录.总结. 条件变量(conditio ...
- GIM发布新版本了 (附rust CLI制作brew bottle流程)
GIM 发布新版本了!现在1.3.0版本可用了 https://github.com/davelet/git-intelligence-message/releases/tag/v1.3.0 .可以通 ...
- 「Log」做题记录 2023.6.15-2023.7.30
\(2023.6.15-2023.6.18\) \(\color{blueviolet}{CF848C}\) 三维偏序,将询问拆开为每个位置到它的前缀,修改则减去之前的贡献,加上新贡献. 错误: se ...
- 【C语言/C++】你知道线程安全代码到底是怎么编写的吗?
相信有很多同学在面对多线程代码时都会望而生畏,认为多线程代码就像一头难以驯服的怪兽,你制服不了这头怪兽它就会反过来吞噬你. 夸张了哈,总之,多线程程序有时就像一潭淤泥,走不进去退不出来. 可这是为什么 ...
- ChatMoney让你体验古诗词的快乐
本文由 ChatMoney团队出品 介绍说明 在中华传统文化的璀璨星空里,诗词宛如熠熠生辉的明珠,而飞花令则是其中一颗独特而耀眼的星辰.如今,我们自豪地为您推出专为孩子精心打造的飞花令机器人,为孩子们 ...
- GAMES101作业1
声明:使用的是vs2022版,以下内容如有问题,感谢各位大佬指正! 作业要求: 作业目的:模拟一个基于 CPU 的光栅化渲染器的简化版本 我们需要做的: 在main.cpp中修改 Eigen::Mat ...