Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态

  • XX :具有时效性的数据
  • -1 :永久有效的数据
  • -2 :已经过期的数据或被删除的数据或未定义的数据

redis中的数据可以设置一个过期时间,比如登录时的验证码,通常都会对其设置一个1—3分钟的有效时间。当数据过了期限后,应该要被删除。但这些数据过期后并不会实时地马上被删除,当这些数据数量累积越来越多,就会占用很多内存,因此在redis底层同时使用了三种策略来删除这些数据。

1.定时删除

创建一个定时器,如果key超时了,由定时器任务立即执行对key的删除操作

优点:节约内存,超时就删除,快速释放不必要内存

缺点:CPU压力大,无论CPU是否负载过高,均占用CPU,会影响redis服务器的响应时间和吞吐量

总结:处理器性能换取存储空间

2.惰性删除

数据到达过期时间,不作处理,等下次访问该数据时

  • 如果未过期,返回数据
  • 如果过期则删除,返回不存在

内部调用expirelfNeeded()方法判断

优点:节约CPU性能,发现必须删除时才删除

缺点:内存压力很大,会出现长期占用内存的数据

总结:存储空间换取处理器性能

3.定期删除

周期性轮询redis库中的时效性数据,采用随机抽取的策略,利用过期数据占比的方式控制删除频度
特点:

  • CPU性能占用设置有峰值,检测频度可自定义设置
  • 内存压力不是很大,长期占用内存的冷数据会被持续清理
  • 周期性抽查存储空间(随机抽查、重点抽查)

定期删除流程

  • Redis启动服务器初始化时,读取配合server.hz的值,默认为10

  • 每秒钟执行server.hz次serverCron()定时轮询,进而调用databasesCron()对各个库进行轮询,再执行activeExpireCycle()进行检查当个库

  • activeExpireCycle()对每个expire[*]逐一进行检测,每次执行250ms/server.hz

  • 对某个expires[*]检测时,随机挑选W个key检测

    • 如果一轮删除的key数量> W*25%,循环该过程(说明过期的数据比较多,需要继续删除)
    • 如果一轮删除的key数量<=W*25%,检查下一个库,0-15之间轮询
      W取值=ACTIVE_EXPIRE_CYCLE_LOOKUPS_PER_LOOP属性值(redis.conf中设置)
  • 参数current_db用于记录activeExpireCycle()进入哪个expires[*]执行

  • 如果activeExpireCycle()执行时间到期即对某个库扫描结束,下次从current_db继续向下执行

删除策略比对

删除策略 内存占用 CPU
定时删除 节约内存,无占用 不分时段占用CPU,频度高
惰性删除 内存占用严重 延时执行,CPU利用率高
定期删除 内存定期随机清理 每秒花费固定的CPU资源维护内存

Redis过期数据的删除策略相关推荐

  1. redis对过期数据的删除策略

      在redis中可以设置键的过期时间,对于过期键的删除策略有三种:定时删除.惰性删除.定期删除 定时删除   定时删除即立即删除,指在设置过期时间时创建一个定时器,在定时器到时间时,立即删除设置的键 ...

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

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

  3. Redis三种删除策略

    首先我们先说一下redis删除的是过期数据,而什么是过期数据呢?过期数据就是设置了有效性的数据到达了过期时间的数据. TTL指令获取数据状态 返回时间:具有时效性的数据 返回-1:表示永久有效的数据 ...

  4. [Redis] Resid的删除策略

    目录 Redis中的数据特征 数据删除策略 2.1定时删除 2.2 惰性删除 2.3 定期删除 删除策略比对 Redis中的数据特征 Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据 ...

  5. Redis的数据删除策略

    Redis的数据可以设置有效时间,当Redis数据失效时,Redis有多种机制来清除失效的数据. Redis 提供了三种删除策略:1. 定时删除 :2. 惰性删除 : 2. 定期删除. 定时删除 当 ...

  6. Redis 过期键删除策略

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

  7. 2022-04-12 redis过期key删除策略

    1 定时删除: 在设置键过期时间的同时,创建一个定时器,让定时器在过期时间来临时,立即执行对键的删除操作; 这样做有一个弊端,就是当有很多key同一时间过期的时候,会造成一时间的CPU紧张,从而可能影 ...

  8. Redis key的删除策略

    问:Redis 删除key的方式有哪些? 答: (1) 定时删除:对Key创建定时器,定时器到期马上删除 这种方式相对比较耗费CPU,因为如果一段时间内key过期太多,一直删除影响性能. (2) 惰性 ...

  9. redis 数据删除策略

    Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态,Redis 的数据删除策略,就是在内存和CPU中找一个平衡点,避免redis性能下降,甚至服务器宕机或者 ...

最新文章

  1. 转置卷积Transposed Convolution
  2. 根际微生物组提高植物耐盐性的研究进展(Biotechnology Advances IF=10)
  3. mysql 执行sql导出表格形式
  4. DEDE常见问题(转)
  5. 超图桌面版加载obj 3D模型
  6. VTK:多块数据集用法实战
  7. API接口设计 注意问题
  8. LeetCode 563. 二叉树的坡度(DFS)
  9. 量子通信入门相关书籍
  10. Django xadmin引入DjangoUeditor
  11. Fast Fourier Transform
  12. ubuntu 18.04,无线网卡无驱动,连不上wifi,显示wifi没有适配器的解决方法
  13. NYOJ--102--次方求模
  14. 比较重要的物料管理交易代码列表
  15. 版本控制工具--CVS
  16. 旁路电容和去偶电容Bypass and Decouple
  17. matlab怎么设置步长,请教matlab中怎么对变步长的数据进行处理
  18. 计算机组成原理区分正负数实验,计算机组成原理实验报告(4个).doc
  19. 东子破解修改oracle10g的最大连接数
  20. HorizontalScrollView 滑动处理

热门文章

  1. JSP中定时器的使用
  2. 题目 1489: 乘法运算
  3. scipy.spatial.cKDTree
  4. 载波与调制信号,调频与调幅的选择
  5. linux 设置显卡命令,Linux命令行下如何配置nVIDIA显卡
  6. Slurm作业提交、查询、修改等常用命令
  7. 普通人做电商还有机会吗?选择哪个平台?
  8. Lombok-使用安装
  9. 群处守住嘴,独处守住心
  10. 转[罗曦]体验孤独——塞罕坝一夜 心灵缺失的地方