一,有三种不同的删除策略

  1. 立即清理。在设置键的过期时间时,创建一个回调事件,当过期时间达到时,由时间处理器自动执行键的删除操作。

  2. 惰性清理。键过期了就过期了,不管。当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key

  3. 定期清理。每隔一段时间,对expires字典进行检查,删除里面的过期键。

二,详细说明三种清理方式的优劣

  1. 立即清理
    立即删除能保证内存中数据的最大新鲜度,因为它保证过期键值会在过期后马上被删除,其所占用的内存也会随之释放。但是立即删除对cpu是最不友好的。
    因为删除操作会占用cpu的时间,如果刚好碰上了cpu很忙的时候,比如正在做交集或排序等计算的时候,就会给cpu造成额外的压力。

  2. 惰性删除
    惰性删除是指,某个键值过期后,此键值不会马上被删除,而是等到下次被使用的时候,才会被检查到过期,此时才能得到删除。
    所以惰性删除的缺点很明显:浪费内存。dict字典和expires字典都要保存这个键值的信息。

  3. 定时删除
    从上面分析来看,立即删除会短时间内占用大量cpu,惰性删除会在一段时间内浪费内存,所以定时删除是一个折中的办法。
    定时删除是:每隔一段时间执行一次删除操作,并通过限制删除操作执行的时长和频率,来减少删除操作对cpu的影响。
    另一方面定时删除也有效的减少了因惰性删除带来的内存浪费。

三,常用策略

目前redis使用的过期键值删除策略是:惰性删除加上定期删除,两者配合使用。
注意:
对于定期删除,在程序中有一个全局变量current_db来记录下一个将要遍历的库,假设有16个库,我们这一次定期删除遍历了10个,那此时的current_db就是11,下一次定期删除就从第11个库开始遍历,假设current_db等于15了,那么之后遍历就再从0号库开始(此时current_db==0

四,Redis内存淘汰机制

redis内存淘汰机制

  • noeviction:内存不足以写入新数据的时候会直接报错。
  • allKeys-lru:内存不足以写入新数据时候,移除最近最少使用的key。
  • allKeys-random: 内存不足以写入新数据时,随机移除key。
  • volatile-lru: 内存不足以写入新数据时,在设置了过期时间的key当中移除最近最少使用的key。
  • volatile-random: 内存不足以写入新数据时,在设置了过期时间的key中,随即移除key。
  • volatile-ttl: 内存不足以写入新数据时,在设置了过期时间的key当中移除最先过期的key。

上面六种你可以这么记:
不移除直接报错: noeviction
在所有key中移除: ①.allKeys-lru ②. allKeys-random
在设置了过期时间的key中移除: ①. volatile-lru ②. volatile-random ③.volatile-ttl
一般常用allKeys-lru

redis过期key的清理/删除策略相关推荐

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

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

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

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

  3. Redis过期key是怎么样清理的?

    在Redis中,对于过期key的清理主要有惰性清除,定时清理,内存不够时清理三种方法,下面我们就来具体看看这三种清理方法. (1)惰性清除 在访问key时,如果发现key已经过期,那么会将key删除. ...

  4. Redis持久化_Redis事务_Redis删除策略

    Redis持久化 Redis包含3中持久化方案: RDB, AOF, RDB与AOF混合使用 RDB RDB: 将内存中数据生成快照形式, 将其保存到.rdb文件中, 关注点是数据 使用命令执行RDB ...

  5. redis过期key的删除策略

    前言 在使用redis的过程中,不免会产生过期的key,而这些key过期后并不会实时地马上被删除,当这些key数量累积越来越多,就会占用很多内存,因此在redis底层同时使用了三种策略来删除这些key ...

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

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

  7. Redis过期key是怎么清理的

    过期删除策略 删除到达过期时间的 key . 第一种:定时检查删除 对于每一个设置了过期时间的 key 都会创建一个定时器,一旦达到过期时间都会删除.这种方式立即清除过期数据,对内存比较好, 但是有缺 ...

  8. Redis基础(五)——删除策略和内存淘汰机制

    文章目录 删除策略和内存淘汰机制 1 删除策略 1.1 定时删除 1.2 惰性删除 1.3 定期删除 2 内存淘汰机制 删除策略和内存淘汰机制 1 删除策略 Redis是一个内存级数据库,内存中的数据 ...

  9. Redis从入门到深入-删除策略(18)

    1. 删除策略 1.1 过期数据 redis中的数据特征 redis是一种内存级数据库, 所有数据均存放在内存中, 内存中的数据可以通过TTL指令获取其状态 XX:具有时效性的数据 -1:永久有效的数 ...

最新文章

  1. 隐藏在Win XP中的28个秘密武器
  2. c#中的BeginInvoke和EndEndInvoke 摘要
  3. tf 矩阵行和列交换_tf.transpose函数的用法讲解
  4. Spring boot(4) web开发(2) 请求处理、响应处理、模板引擎
  5. 先验信息,先验概率,先验分布,后验概率,后验分布,共轭分布,共轭先验分布
  6. 整理学 nodejs 资源
  7. 区块链 Gossip Protocol是什么
  8. 【jQuery获取下拉框select、单选框radio、input普通框的值和checkbox选中的个数】
  9. mysql怎么递归查询下级_mysql递归查询上下级
  10. 华为云服务器手机密码找回,忘记华为账号密码怎么办?两招就能帮你解决
  11. m7405d粉盒清零方法_联想各种打印机多功能一体机硒鼓清零方法汇总
  12. Python pickle 反序列化详解
  13. 信息系统项目管理师必背知识点(完整版)
  14. 梦想易语言零基础注册机到多线程教程
  15. 2018APP推广计划方案(完整版)
  16. 入门推荐系统,这25篇综述文章足够了
  17. Nacos配置热更新两种方式。
  18. 问题 G: 学号识别
  19. [APIO2009]采油区域 题解
  20. 程序员到35岁真的会失业吗

热门文章

  1. 268条PCB Layout设计规范
  2. js 导出word 文档 doc docx
  3. 家庭网关在线率下降是为啥
  4. EPICS caputRecorder模块
  5. EtherCAT 从站作参考时钟
  6. css3选择器、背景、边框、渐变、阴影以及文本效果的介绍及实现
  7. 手机里的计算机三角函数怎样输入,三角函数三角函数怎样在电脑上打出来 – 手机爱问...
  8. Android键盘显示和隐藏
  9. checkedlistbox使用办法
  10. 以数据中台为“发动机”,易观方舟5.0的全新蜕变