1 定时删除: 在设置键过期时间的同时,创建一个定时器,让定时器在过期时间来临时,立即执行对键的删除操作;
这样做有一个弊端,就是当有很多key同一时间过期的时候,会造成一时间的CPU紧张,从而可能影响整体服务性能的吞吐量;
2 惰性删除: 放任键过期不管,但是每次从键空间获取键时,都检查取得的键是否过期,过期的话就删除该键,没过期的话就返回该键;
这样的弊端是会存在很多已经过期的占用着内存; 优点是 不会出现方案1 中的问题;
3 定期删除: 每隔一段时间,程序就对数据库进行一次检查,删除里面的过期键,至于要删除多少个过期键,检查多少个数据库,由算法决定;
算是方案1 与 方案2 的折中办法,但是问题在于如何界定这个定期的频率;

Redis所用策略
惰性删除和定期删除相结合,但是Redis定期删除是随机抽取机制,不可能扫描删除掉所有的过期Key,因此需要内存淘汰机制.

内存淘汰机制
redis中当内存超过限制时,按照配置的策略,淘汰掉相应的key-value,使得内存可以继续留有足够的空间保存新的数据;

Redis有6种策略(默认no-enviction)

image.png

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删除策略相关推荐

  1. Redis 过期 key 删除,那些不得不说的事情!

    点击关注公众号,利用碎片时间学习 1.过期key的删除策略 定时删除:当为key设置过期时间的时候,设置一个定时任务,到时间后即刻调用并删除 定期删除:每隔一定的时间,对某些key进行扫描,并删除掉其 ...

  2. Redis 过期键删除策略、内存淘汰机制

    文章目录 过期键删除策略 定时删除 惰性删除 定期删除 Redis的选择 内存淘汰机制 redis中缓存的数据是有过期时间的,当缓存数据失效时,redis会删除过期数据以节省内存,那redis是怎样怎 ...

  3. Redis 过期键删除策略

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:八个开源的 Spring Boot 学习资源,你值得拥有个人原创+1博客:点击前往,查看更多 作者:罗曼蒂克 链 ...

  4. Redis[5] key的过期时间删除策略、实现lru算法、持久化配置

    文章目录 Redis[5] key的过期时间删除策略.持久化配置 **Redis6的key过期时间删除策略** Redis服务器实际使用的是惰性删除和定期删除两种策略:通过配合使用这两种删除策略,服务 ...

  5. Redis 过期 key 清理删除策略汇总

    Redis 底层使用了三种策略来清理过期的key 一.被动清理 触发条件:读/写一个已经过期的key 当读写一个key时,Redis首先检查key是否存在,若存在且已经过期,则删除key的同时返回ni ...

  6. Redis源码分析:过期key删除与设置key的过期时间

    Redis中设置key过期时间与过期key的处理流程 在Redis中,可以再设置值的时候就设置该Key的过期时间,也可以通过在expire命令来设置某个key值的过期时间,并且在了解完设置过期时间之后 ...

  7. Redis的过期键删除策略和内存淘汰机制

    一.过期键的判定 通过过期字典,程序可以用以下步骤检查一个给定键的过期时间: (1)检查给定键是否存在于过期字典:如果存在就取出来过期时间: (2)检查当前的UNIX时间戳是否大于键的过期时间,如果是 ...

  8. Redis系列(五):Redis的过期键删除策略

    Redis系列(五):Redis的过期键删除策略 - 申城异乡人 - 博客园 本篇博客是Redis系列的第5篇,主要讲解下Redis的过期键删除策略. 本系列的前4篇可以点击以下链接查看: Redis ...

  9. Redis之过期键删除策略

    (一)关于键的过期时间或生存时间   我们知道,Redis数据库是基于内存的,但是如果一些不用的键在内存中一直存在,那么久而久之,就有可能会发生oom的情况.所以,redis数据库提供了常用的EXPI ...

最新文章

  1. 【超详细】DBCP连接池配置参数说明
  2. NOIP2011 提高组 Day1
  3. Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍
  4. jdbc mysql 报错 ssl_Mybatis使用JDBC连接数据库报错及解决方案
  5. poj-2828 Buy Tickets ***
  6. inkscape生成g代码_三点二. 量子对抗生成网络 (Quantum GAN)
  7. 《图像理解理论与方法》(1)
  8. python怎么读取txt文件-Python笔记(读取txt文件中的数据)
  9. 【2020模拟考试T2】【PAT乙】1032 挖掘机技术哪家强 (20分) 模拟,STL
  10. 7. HTTP 请求,响应
  11. PIE工程师是做什么的
  12. java group by_Java中如何实现对List内容分组(group by)?
  13. T-Tree索引与MMDB简单映射(草稿)
  14. 安装deepin后没有Windows启动项解决办法
  15. Confluence 更改数据库地址
  16. 无线键盘RK61使用说明
  17. kafka zookeeper docker容器互联
  18. 分层 Wyner-Ziv视频编解码——第二天
  19. 网络综合测试仪 的功能和参数
  20. 基于STM32的智能篮球测温记分记时系统

热门文章

  1. matlab专业版与试用版区别,试用版和正式版的区别等
  2. 关于网站编码完成后,上线前的安全检查
  3. 每日习字|2020-05-25
  4. 【新刊邀稿】1区计算机类SCI,极速审稿,最快仅1个月25天录用,录用后16天见刊
  5. Snort用户手册(转)
  6. 整型数组处理算法(十三)请实现一个函数:凑14。[风林火山]
  7. 《Point Feature Extraction on 3D Range Scans Taking into Account Object Boundaries》——译文
  8. 漫画 | Linux之父:财务自由以后,我失眠了!
  9. B - Magical Subsequence
  10. 20221215今天的世界发生了什么