反正就是主动删 就是对数据进行额外的处理 占用CPU的时间 对性能响应时间 吞吐量会有影响

不主动删 等到查数据再看键过没过期 就是不用进行额外处理 但是过期的键没有及时删除 占内存 浪费内存

反正就是都有优缺点

Redis的过期删除策略就是:惰性删除和定期删除两种策略配合使用。

惰性删除:惰性删除不会去主动删除数据,而是在访问数据的时候,再检查当前键值是否过期,如果过期则执行删除并返回 null 给客户端,如果没有过期则返回正常信息给客户端。它的优点是简单,不需要对过期的数据做额外的处理,只有在每次访问的时候才会检查键值是否过期,缺点是删除过期键不及时,造成了一定的空间浪费。

定期删除:Redis会周期性的随机测试一批设置了过期时间的key并进行处理。测试到的已过期的key将被删除。

附:删除key常见的三种处理方式。

1、定时删除

在设置某个key 的过期时间同时,我们创建一个定时器,让定时器在该过期时间到来时,立即执行对其进行删除的操作。

优点:定时删除对内存是最友好的,能够保存内存的key一旦过期就能立即从内存中删除。

缺点:对CPU最不友好,在过期键比较多的时候,删除过期键会占用一部分 CPU 时间,对服务器的响应时间和吞吐量造成影响。

2、惰性删除

设置该key 过期时间后,我们不去管它,当需要该key时,我们在检查其是否过期,如果过期,我们就删掉它,反之返回该key。

优点:对 CPU友好,我们只会在使用该键时才会进行过期检查,对于很多用不到的key不用浪费时间进行过期检查。

缺点:对内存不友好,如果一个键已经过期,但是一直没有使用,那么该键就会一直存在内存中,如果数据库中有很多这种使用不到的过期键,这些键便永远不会被删除,内存永远不会释放。从而造成内存泄漏。

3、定期删除

每隔一段时间,我们就对一些key进行检查,删除里面过期的key。

优点:可以通过限制删除操作执行的时长和频率来减少删除操作对 CPU 的影响。另外定期删除,也能有效释放过期键占用的内存。

缺点:难以确定删除操作执行的时长和频率。如果执行的太频繁,定期删除策略变得和定时删除策略一样,对CPU不友好。如果执行的太少,那又和惰性删除一样了,过期键占用的内存不会及时得到释放。另外最重要的是,在获取某个键时,如果某个键的过期时间已经到了,但是还没执行定期删除,那么就会返回这个键的值,这是业务不能忍受的错误。

reids过期键删除的策略-惰性删除 定期删除相关推荐

  1. mybatis-plus 初始化项目 主键自增策略 自动填充 逻辑删除 乐观锁 复杂查询 分页查询

    一创建数据库(添加数据) 二 创建springboot工程 导入工程所需要的依赖(mybatis-plus,mysql-connector-java,lombok) <dependency> ...

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

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

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

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

  4. Redis之过期键删除策略

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

  5. redis的过期键删除策略

    Redis 中 key 的过期删除策略 Redis 中提供了三种过期删除的策略 1.定时删除 在设置某个 key 的过期时间同时,我们创建一个定时器,让定时器在该过期时间到来时,立即执行对其进行删除的 ...

  6. Redis 过期键删除策略

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

  7. oracle定时器定时删除30天前的数据_Redis的过期键删除策略

    对于Redis服务器来说,内存资源非常宝贵,如果一些过期键一直不被删除,就会造成资源浪费, 因此我们需要考虑一个问题:如果一个键过期了,它什么时候会被删除呢? 1. 常见的删除策略 常见的删除策略有以 ...

  8. Redis源码剖析(四)过期键的删除策略

    Redis是支持时间事件的,所谓时间事件,是为某个键值对设置过期时间,时间一到,Redis会自动删除该键值对.例如使用SET命令添加字符串类型的键值对 127.0.0.1:6379> SET b ...

  9. Redis过期键的删除策略

    文章目录 立即删除 惰性删除 定时删除 Redis使用的策略 Redis中有个设置时间过期的功能,即对存储在 redis 数据库中的值可以设置一个过期时间.作为一个缓存数据库,这是非常实用的.如我们一 ...

最新文章

  1. Java线程池(一)
  2. spark Intellij IDEA及eclipse开发环境搭建
  3. 14.PHP_PHP与XML技术
  4. Java 反射机制详解:私有方法调用头大?如何通过反射调用类中的私有方法?
  5. 雪城大学信息安全讲义 4.1~4.2
  6. 【Elasticsearch】Elasticsearch 索引生命周期管理
  7. HDU - 2122 Ice_cream’s world III
  8. 图像处理之全景拼接---基于sift的全景图像拼接
  9. MonoCSharp Evaluator Extension
  10. 如何将音乐上传到YouTube音乐
  11. python建模过程总结(一)
  12. 花呗问答匹配(part3 各种模型运行)
  13. emlog微语支持html,Emlog插件能陪聊的Live2d版伊斯特瓦尔看板娘
  14. 【Leetcode刷题Python】134. 加油站
  15. 笔记本无线网口共享网络给以太网口
  16. 何为裂变?上百个裂变营销活动让我揭开了其神秘面目!
  17. 职场人如何制定学习计划?
  18. 数据库习题(教材:刘爽英清华大学出版社版)
  19. NetApp AFF A 系列全闪存存储阵列
  20. 无线通信安全作业1-无线通信安全最新消息

热门文章

  1. Leap Motion开发(三)Unity3D API总结
  2. ad元件定位孔放在哪一层_施工现场定位放线、基础施工放线、主体施工放线,图文详解...
  3. Wake、场库、桔多多等应用被通报下架,涉及三七互娱、新片场
  4. Vue Router官网
  5. mysql两万字精华总结
  6. Android-屏幕左右侧滑(二)
  7. 【嵌入式】在Ubuntu系统下通过OpenCV实现点阵汉字的字模读取与显示
  8. 洛谷P8707 [蓝桥杯 2020 省 AB1] 走方格 C语言/C++
  9. 【Markdown常用语法】
  10. 安卓Imageview控件如何获取网络图片