2022-04-12 redis过期key删除策略
1 定时删除: 在设置键过期时间的同时,创建一个定时器,让定时器在过期时间来临时,立即执行对键的删除操作;
这样做有一个弊端,就是当有很多key同一时间过期的时候,会造成一时间的CPU紧张,从而可能影响整体服务性能的吞吐量;
2 惰性删除: 放任键过期不管,但是每次从键空间获取键时,都检查取得的键是否过期,过期的话就删除该键,没过期的话就返回该键;
这样的弊端是会存在很多已经过期的占用着内存; 优点是 不会出现方案1 中的问题;
3 定期删除: 每隔一段时间,程序就对数据库进行一次检查,删除里面的过期键,至于要删除多少个过期键,检查多少个数据库,由算法决定;
算是方案1 与 方案2 的折中办法,但是问题在于如何界定这个定期的频率;
Redis所用策略
惰性删除和定期删除相结合,但是Redis定期删除是随机抽取机制,不可能扫描删除掉所有的过期Key,因此需要内存淘汰机制.
内存淘汰机制
redis中当内存超过限制时,按照配置的策略,淘汰掉相应的key-value,使得内存可以继续留有足够的空间保存新的数据;
Redis有6种策略(默认no-enviction)
volatile-lru:使用LRU算法进行数据淘汰(淘汰上次使用时间最早的,且使用次数最少的key),只淘汰设定了有效期的key ;
allkeys-lru:使用LRU算法进行数据淘汰,所有的key都可以被淘汰;
volatile-random:随机淘汰数据,只淘汰设定了有效期的key;
allkeys-random:随机淘汰数据,所有的key都可以被淘汰;
volatile-ttl:淘汰剩余有效期最短的key;
no-enviction:不删除任意数据(但redis还会根据引用计数器进行释放),这时如果内存不够时,会直接返回错误 。
volatile-lfu : 淘汰最不频繁访问的数据,它是根据频率维度来选择将要淘汰的元素,即删除访问频率最低的元素。如果两个元素的访问频率相同,则淘汰最久没被访问的元素。只淘汰设定了有效期的key ;
allkeys-lfu : 使用LFU算法进行数据淘汰,所有的key都可以被淘汰;
2022-04-12 redis过期key删除策略相关推荐
- Redis 过期 key 删除,那些不得不说的事情!
点击关注公众号,利用碎片时间学习 1.过期key的删除策略 定时删除:当为key设置过期时间的时候,设置一个定时任务,到时间后即刻调用并删除 定期删除:每隔一定的时间,对某些key进行扫描,并删除掉其 ...
- Redis 过期键删除策略、内存淘汰机制
文章目录 过期键删除策略 定时删除 惰性删除 定期删除 Redis的选择 内存淘汰机制 redis中缓存的数据是有过期时间的,当缓存数据失效时,redis会删除过期数据以节省内存,那redis是怎样怎 ...
- Redis 过期键删除策略
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:八个开源的 Spring Boot 学习资源,你值得拥有个人原创+1博客:点击前往,查看更多 作者:罗曼蒂克 链 ...
- Redis[5] key的过期时间删除策略、实现lru算法、持久化配置
文章目录 Redis[5] key的过期时间删除策略.持久化配置 **Redis6的key过期时间删除策略** Redis服务器实际使用的是惰性删除和定期删除两种策略:通过配合使用这两种删除策略,服务 ...
- Redis 过期 key 清理删除策略汇总
Redis 底层使用了三种策略来清理过期的key 一.被动清理 触发条件:读/写一个已经过期的key 当读写一个key时,Redis首先检查key是否存在,若存在且已经过期,则删除key的同时返回ni ...
- Redis源码分析:过期key删除与设置key的过期时间
Redis中设置key过期时间与过期key的处理流程 在Redis中,可以再设置值的时候就设置该Key的过期时间,也可以通过在expire命令来设置某个key值的过期时间,并且在了解完设置过期时间之后 ...
- Redis的过期键删除策略和内存淘汰机制
一.过期键的判定 通过过期字典,程序可以用以下步骤检查一个给定键的过期时间: (1)检查给定键是否存在于过期字典:如果存在就取出来过期时间: (2)检查当前的UNIX时间戳是否大于键的过期时间,如果是 ...
- Redis系列(五):Redis的过期键删除策略
Redis系列(五):Redis的过期键删除策略 - 申城异乡人 - 博客园 本篇博客是Redis系列的第5篇,主要讲解下Redis的过期键删除策略. 本系列的前4篇可以点击以下链接查看: Redis ...
- Redis之过期键删除策略
(一)关于键的过期时间或生存时间 我们知道,Redis数据库是基于内存的,但是如果一些不用的键在内存中一直存在,那么久而久之,就有可能会发生oom的情况.所以,redis数据库提供了常用的EXPI ...
最新文章
- 【超详细】DBCP连接池配置参数说明
- NOIP2011 提高组 Day1
- Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍
- jdbc mysql 报错 ssl_Mybatis使用JDBC连接数据库报错及解决方案
- poj-2828 Buy Tickets ***
- inkscape生成g代码_三点二. 量子对抗生成网络 (Quantum GAN)
- 《图像理解理论与方法》(1)
- python怎么读取txt文件-Python笔记(读取txt文件中的数据)
- 【2020模拟考试T2】【PAT乙】1032 挖掘机技术哪家强 (20分) 模拟,STL
- 7. HTTP 请求,响应
- PIE工程师是做什么的
- java group by_Java中如何实现对List内容分组(group by)?
- T-Tree索引与MMDB简单映射(草稿)
- 安装deepin后没有Windows启动项解决办法
- Confluence 更改数据库地址
- 无线键盘RK61使用说明
- kafka zookeeper docker容器互联
- 分层 Wyner-Ziv视频编解码——第二天
- 网络综合测试仪 的功能和参数
- 基于STM32的智能篮球测温记分记时系统
热门文章
- matlab专业版与试用版区别,试用版和正式版的区别等
- 关于网站编码完成后,上线前的安全检查
- 每日习字|2020-05-25
- 【新刊邀稿】1区计算机类SCI,极速审稿,最快仅1个月25天录用,录用后16天见刊
- Snort用户手册(转)
- 整型数组处理算法(十三)请实现一个函数:凑14。[风林火山]
- 《Point Feature Extraction on 3D Range Scans Taking into Account Object Boundaries》——译文
- 漫画 | Linux之父:财务自由以后,我失眠了!
- B - Magical Subsequence
- 20221215今天的世界发生了什么