1 过期删除策略

1.1 定时删除

当对一个key设置了过期时间,当该时间到,立即执行对该key的删除。

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

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

1.2 惰性删除

当一个key被设置过期时间后,当key的过期时间到了,并不会立即从内存中删除;在我们使用该key时,先检查其是否过期,过期则将其从内存中删除。

优点:对CPU友好、只在使用的时候才会进行过期检查,对于没用到的key不会浪费时间进行过期检查。

缺点:对内存不好用,key过期了,却一直没被使用,就会一直占这内存。如果数据库中存在很多过期键不被使用,便永远不会被被删除,内存不会被释放,从而造成内存泄漏。

1.3 定期删除

每隔一段时间(该时间段可设置),随机抽取一些设置了过期时间的key进行检查,删除里面过期的键。

在Redis的配置文件redis.conf中有一个属性"hz",默认为10,表示1s执行10次定期删除,即每隔100ms执行一次,可以修改这个配置值。

随机抽取,抽取多少?

同样是由redis.conf文件中的maxmemory-samples属性决定的,默认为5。

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

缺点:难以确定删除操作执行的时长和频率。

   如果执行的太频繁,定期删除策略变得和定时删除策略一样,对CPU不友好。

   如果执行的频率小,就和惰性删除一样了,过期键占用的内存不会及时得到释放。

另外最重要的是,在获取某个键时,如果某个键的过期时间已经到了,但是还没执行定期删除,那么就会返回这个键的值,这是业务不能忍受的错误。

2 Redis过期删除策略

redis过期删除策略:惰性删除和定期删除。

3 内存淘汰策略

内存淘汰机制能保证在redis内存占用过高的时候,去进行内存淘汰,也就是删除一部分key,保证redis的内存占用率不会过高,那么它会淘汰哪些key呢?Redis目前共提供了8种内存淘汰策略,含Redis 4.0版本之后又新增的两种LFU模式:volatile-lfu和allkeys-lfu。

LRU:最近最久未使用

LFU:最近最少使用

no-eviction 当内存不足以容纳新写入数据时,新写入操作会报错,无法写入新数据,一般不采用。
allkeys-lru 当内存不足以容纳新写入数据时,移除最近最少使用的key,这个是最常用的
allkeys-random 当内存不足以容纳新写入的数据时,随机移除key
allkeys-lfu 当内存不足以容纳新写入数据时,移除最不经常(最少)使用的key
volatile-lru 当内存不足以容纳新写入数据时,在设置了过期时间的key中,移除最近最少使用的key
volatile-random 内存不足以容纳新写入数据时,在设置了过期时间的key中,随机移除某个key 
volatile-lfu 当内存不足以容纳新写入数据时,在设置了过期时间的key中,移除最不经常(最少)使用的key 
volatile-ttl 当内存不足以容纳新写入数据时,在设置了过期时间的key中,优先移除过期时间最早(剩余存活时间最短)的key

※ 什么时候会执行内存淘汰策略,内存占用率过高的标准是什么?

redis.conf配置文件中的 maxmemory 属性限定了 Redis 最大内存使用量,当占用内存大于maxmemory的配置值时会执行内存淘汰策略。

※ 内存淘汰策略的配置

内存淘汰机制由redis.conf配置文件中的maxmemory-policy属性设置,没有配置时默认为no-eviction模式。

※ 淘汰策略的执行过程

> 客户端执行一条命令,导致Redis需要增加数据(比如set key value);

> Redis会检查内存使用情况,如果内存使用超过 maxmemory,就会按照配置的置换策略maxmemory-policy删除一些key;

> 再执行新的数据的set操作;

Redis过期策略和淘汰策略相关推荐

  1. 高性能分布式缓存redis(持久化原理 安全策略 过期删除内存淘汰策略 性能压测 高可用 Redis Cluster)

    redis redis(持久化原理 安全策略 过期删除&内存淘汰策略 性能压测 高可用 Redis Cluster) 1. 持久化原理 1.1 持久化流程(落盘) 1.2 RDB详解 1.2. ...

  2. Redis(五)Redis内存维护方案(过期策略及淘汰策略)

    目录 内存维护解决方案 过期策略 内存淘汰策略 内存维护解决方案 在Redis的配置文件中redis.conf 中memeory managment # maxmemory <bytes> ...

  3. redis过期策略与淘汰策略

    redis过期策略与淘汰策略 1.过期策略 2.淘汰策略 3.在哪里配置? 4.Lazy Free 1.过期策略 1.redis中所有的key都可以通过expire命令来设置过期时间,所有被设置了过期 ...

  4. Redis-设置过期时间及淘汰策略

    文章目录 1. TTL 2. 设置过期时间 3. 删除过期key 4. 淘汰策略 Redis-设置过期时间及淘汰策略 项目组使用的 Redis 服务器发出了内存不足报警,查了一些资料,记录下. 1. ...

  5. Reds 过期策略 内存淘汰策略 持久化策略

    过期策略 定期删除 redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定期遍历这个字典来删除到期的 key. 定期删除策略 Redis 默认会每秒进行十次过期扫描(100ms ...

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

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

  7. redis的过期策略和淘汰策略

    过期键删除策略 1.定时删除:在设置键的过期时间的同时,创建一个定时器timer,让定时器在键过期时间来临时,立即执行对键的删除操作. 2.惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查 ...

  8. Redis的持久化机制、过期策略、淘汰策略

    文章目录 一.持久化机制 1. RDB机制 2. AOF机制 RDB的优缺点 AOF的优缺点 持久化机制选择 二.过期策略 常见过期策略 Redis过期策略 1. 定期删除 2. 惰性删除 RDB对过 ...

  9. Redis 过期策略和淘汰策略

    1.Redis 过期策略 Redis 过期策略用于处理设置了缓存时间的数据,使用定时扫描和惰性删除机制删除到期的缓存数据. Redis 将设置了过期时间的 key 保存在一个独立的字典中,定时扫描就是 ...

  10. Redis之key的淘汰策略

    Redis中有一些Key到期了,需要一些策略来处理这些过期的key, 设置到期时间的key会放入一个单独的字典中,以后会定时遍历这个这个字典来删除到期的key,除了定时遍历以外,还会使用惰性策略来删除 ...

最新文章

  1. python数字类型-Python数字类型介绍
  2. 项目代码从GitHub上克隆到本地
  3. 云炬金融每日一题20211008
  4. js一个典型的对象写法,推荐使用这种格式,用于处理图像的基本方法、
  5. 初识Mysql(part18)--我需要知道的4个关于联结的小知识点
  6. 从零开始学android开发-布局中 layout_gravity、gravity、orientation、layout_weight
  7. 微博拟全球发售1100万股 发售价不超388港元
  8. U 盘无法拷贝大于 4GB 文件的解决方法
  9. 《刀塔传奇》付费设计分析
  10. 简历编写技巧-java开发工程师简历实战
  11. CoreData数据库版本迁移
  12. [导入]agtweener.zip(673.46 KB)
  13. 357.计算各个位数不同的数字个数
  14. Matlab 2021b安装
  15. 【数字钟】数字电路设计 24 小时数字钟(带加速、暂停、滴答声、清零功能)
  16. Unity : Timeout while trying to pause the Unity Engine.应用闪退问题修复
  17. uniapp 动态设置导航栏标题 副标题 背景图片 web-view
  18. Python处理中文路径
  19. 微信分销商城如何推广比较吸引粉丝
  20. element组件树形控件el-tree点击展开节点,节点重影

热门文章

  1. 抛开时代背景,任何技术讨论都是瞎耽误功夫
  2. AdGuard Home 使用设置以及DNS测速软件
  3. C语言新手入门练习之三子棋
  4. 数据库-SQL语句创建与修改
  5. kali初学——nmap扫描
  6. 软件自动化测试优点,自动化测试的优势和劣势有哪些?
  7. 效率源linux,效率源希捷硬盘修复(4.2版)及程序下载
  8. h5棋牌平台日租搭建HTML5技术学习总结
  9. tensorflow中常用的激活函数
  10. 【渝粤教育】电大中专电商运营实操 作业 题库