返回顶部
首页 > 资讯 > 数据库 >redis key键过期删除策略及淘汰机制探究
  • 260
分享到

redis key键过期删除策略及淘汰机制探究

rediskey键过期删除rediskey 2023-11-17 10:11:44 260人浏览 八月长安
摘要

目录Redis过期删除删除策略淘汰机制redis过期删除 redis的键可以设置过期时间,但是并不是每个键一到过期时间就会立即删除,redis不可能给每个设置过期时间的key上添加一个定时器来监视是否过期,CPU根本承受

redis过期删除

redis的键可以设置过期时间,但是并不是每个键一到过期时间就会立即删除,redis不可能给每个设置过期时间的key上添加一个定时器来监视是否过期,CPU根本承受不了如此多的定时线程

注意:我使用的版本是6.0.10,不同版本可能略有差别

删除策略

存在的删除策略:

  • 定时删除 在设置键的同时创建定时器,过期时间到了就执行对键的删除,这种策略对内存使用率有优势,但是占用CPU资源太多
  • 定期删除 每隔特定时间对数据库进行一次扫描,检测并删除其中过期的键值对
  • 惰性删除 键值对过期暂时不进行删除,当获取键时先查看是否已经过期,过期则进行删除,这种策略可能会由于一些过期key一直没有被访问,浪费一定的内存

redis采用的策略是定期删除+惰性删除

定期删除是指每隔一段时间去检查是否有过期的key,如果有则删除

惰性删除是指在获取key的时候检查一下这个key是否过期

定期删除的配置是hz(默认是10,即每秒十次扫描)

首先客户端在尝试访问某个key的时候,redis会检查是否过期,如果过期则删除,但是有些key是不会被访问到的,redis的定期删除则会进行扫描并删除过期的key

  • 从过期字典里随机抽取20个key
  • 删除这20个key中已经过期的key
  • 如果过期的比例超过25%,则重复步骤一

过期的key过多会导致循环抽取删除,为防止过度循环,增加了扫描时间的上限,默认不超过25ms

应该避免同一时刻大量key同时过期

在主从结构中,从服务器就算读取到过期键也不会删除,只有接收到主服务器发来的del命令之后才会删除

淘汰机制

配置最大内存的大小,如果超过该内存大小,就会使用淘汰机制进行淘汰

maxmemory 100mb

也可以通过命令进行修改

127.0.0.1:6380> config set maxmemory 50mb
OK
127.0.0.1:6380> config get maxmemory
1) "maxmemory"
2) "52428800"

由于使用定期删除+惰性删除机制,但是也可能很多过期的没有被删除掉导致内存不足的情况,所以redis存在淘汰机制

  • volatile-lru -> Evict using approximated LRU, only keys with an expire set 当内存不足时,设置了过期时间的键,选取最近最少使用的键抛弃(Least Recently Used)
  • allkeys-lru -> Evict any key using approximated LRU 当内存不足时,对于所有的键,选取最近最少使用的键抛弃(Least Recently Used)
  • volatile-lfu -> Evict using approximated LFU, only keys with an expire set 当内存不足时,设置了过期时间的键,选取最少频率使用的键抛弃(Least Frequently Used)
  • allkeys-lfu -> Evict any key using approximated LFU 当内存不足时,对于所有的键,选取最少频率使用的键抛弃(Least Frequently Used)
  • volatile-random -> Remove a random key having an expire set 当内存不足时,对于设置过期时间的键,随机选取键抛弃
  • allkeys-random -> Remove a random key, any key 当内存不足时,对于所有的键,随机选取键抛弃
  • volatile-ttl -> Remove the key with the nearest expire time (minor TTL) 当内存不足时,抛弃最近要过期的键
  • noeviction -> Don't evict anything, just return an error on write operations 默认策略,不淘汰,如果内存已满,写操作返回错误

在使用volatile-lfu、volatile-random、volatile-ttl时,如果没有key可以淘汰,则与noeviction一样在写操作时返回错误

获取当前的内存策略

config get maxmemory-policy

可以在配置文件修改

maxmemory-policy noeviction

也可以使用命令设置

config set maxmemory-policy noeviction

在进行LRU/LFU/TTL淘汰策略时,并不是那么准确,可以通过采样率来进行设置其准确度,默认是5,即随机选出5个key,然后淘汰掉里面最近最少使用的key。

当设置为10的时候就非常接近真正的LRU算法了,但是会消耗更多的CPU,5已经是足够好的结果了

maxmemory-samples 5

以上就是redis key键过期删除策略及淘汰机制探究的详细内容,更多关于redis key键过期删除的资料请关注编程网(www.cppcns.com)其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: redis key键过期删除策略及淘汰机制探究

本文链接: https://lsjlt.com/news/546943.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • redis key键过期删除策略及淘汰机制探究
    目录Redis过期删除删除策略淘汰机制redis过期删除 redis的键可以设置过期时间,但是并不是每个键一到过期时间就会立即删除,redis不可能给每个设置过期时间的key上添加一个定时器来监视是否过期,CPU根本承受...
    99+
    2023-11-17
    redis key键过期删除 redis key
  • Redis 过期删除策略和内存淘汰机制
          Redis 设置过期时间 Redis 有四个不同的命令可以用于设置键的生存时间(键可以存在多久)或过期时间(键什么时候会被删除): EXPIRE ——将键 key 的生存时间设置为 ttl 秒。 PEXPIRE ——...
    99+
    2015-02-08
    Redis 过期删除策略和内存淘汰机制
  • Redis过期删除策略与内存淘汰策略
    目录过期删除策略设置Redis中key的过期时间 (单位:秒)常见的三种过期删除策略Redis使用用的过期删除策略Redis的定期删除的流程内存淘汰策略设置Redis最大运行内存Redis 内存淘汰策略有哪些?LRU 算...
    99+
    2024-04-02
  • 浅谈Redis中的内存淘汰策略和过期键删除策略
    目录8种淘汰策略过期键的删除策略总结 redis是我们现在最常用的一个工具,帮助我们建设系统的高可用,高性能。 而且我们都知道redis是一个完全基于内存的工具,这也是redis速...
    99+
    2024-04-02
  • 浅谈Redis 中的过期删除策略和内存淘汰机制
    目录前言Redis 中 key 的过期删除策略1、定时删除2、惰性删除3、定期删除Redis 中过期删除策略从库是否会脏读主库创建的过期键内存淘汰机制内存淘汰触发的最大内存有哪些内存...
    99+
    2024-04-02
  • Redis中的过期删除策略和内存淘汰机制是什么
    这篇文章主要讲解了“Redis中的过期删除策略和内存淘汰机制是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis中的过期删除策略和内存淘汰机制是什么”吧!Redis 中 key 的...
    99+
    2023-06-29
  • Redis 的内存淘汰策略和过期删除策略的区别
    目录前言过期删除策略如何设置过期时间?如何判定 key 已过期了?过期删除策略有哪些?Redis 过期删除策略是什么?内存淘汰策略如何设置 Redis 最大运行内存?Redis 内存淘汰策略有哪些?LRU 算法和 LFU...
    99+
    2022-07-04
    Redis 内存淘汰策略 Redis 过期删除策略
  • Redis 的内存淘汰策略和过期删除策略的区别
    目录前言过期删除策略如何设置过期时间?如何判定 key 已过期了?过期删除策略有哪些?Redis 过期删除策略是什么?内存淘汰策略如何设置 Redis 最大运行内存?Redis 内存...
    99+
    2024-04-02
  • redis淘汰策略会删除磁盘上的key吗
    否,redis淘汰策略不会删除磁盘上的key。该策略仅针对内存中的key,以腾出空间给新key,而磁盘上的持久化数据不受影响。 Redis淘汰策略是否会删除磁盘上的Key 否,Redi...
    99+
    2024-04-19
    redis 数据访问
  • Redis的内存淘汰策略和过期删除策略有什么区别
    本文小编为大家详细介绍“Redis的内存淘汰策略和过期删除策略有什么区别”,内容详细,步骤清晰,细节处理妥当,希望这篇“Redis的内存淘汰策略和过期删除策略有什么区别”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-07-02
  • redis如何删除过期key策略
    在Redis中删除过期key有两种策略: 主动删除:Redis会在每次访问key时检查其是否过期,如果过期则立即删除。这种方式会...
    99+
    2024-04-02
  • Redis的内存淘汰策略和过期删除策略的区别是什么
    这篇文章主要介绍“Redis的内存淘汰策略和过期删除策略的区别是什么”,在日常操作中,相信很多人在Redis的内存淘汰策略和过期删除策略的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方...
    99+
    2024-04-02
  • Redis过期键与内存淘汰策略深入分析讲解
    目录一、Redis数据库的组织方式1.1 redisServer结构定义1.2 redisDb 结构定义1.3 redisdb初始化二、过期键2.1 设置键的过期时间2.2 过期键的判定2.3 过期键的删除策略2.3.1...
    99+
    2022-11-28
    Redis过期键 Redis内存淘汰策略
  • Redis系列(五):Redis的过期键删除策略
    Redis的过期键删除策略。 本篇博客是Redis系列的第5篇,主要讲解下Redis的过期键删除策略。 本系列的前4篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装 Redis系...
    99+
    2014-11-06
    Redis系列(五):Redis的过期键删除策略
  • Redis的过期键删除策略原理说明
    目录惰性删除定期删除惰性删除策略定期删除策略的实现Redis服务器实际使用的是惰性删除和定期删除两种策略:通过配合使用这两种删除策略,服务器可以很好地在合理使用CPU时间和避免浪费内存空间之间取得平衡。 惰性删除 惰性删...
    99+
    2024-04-02
  • Redis中键的过期删除策略深入讲解
    如果一个键过期了,那么它什么时候会被删除呢? 这个问题有三种可能的答案,它们分别代表了三种不同的删除策略: 定时删除:在设置键的过期时间的同时,创建一个定时器( timer ). 让定时器...
    99+
    2024-04-02
  • Redis过期键删除策略的原理是什么
    这篇“Redis过期键删除策略的原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“R...
    99+
    2024-04-02
  • redis 过期策略及内存回收机制解析
    目录1. 过期策略1.1 过期的 key 集合1.2 定时扫描策略1.3 从库的过期策略2. 懒惰删除2.1 异步线程2.2 flush2.3 异步队列2.4 AOF Sync很慢的...
    99+
    2024-04-02
  • redis 过期策略及内存回收机制的示例分析
    这篇文章主要介绍了redis 过期策略及内存回收机制的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。redis作为缓存的场景下,内存淘汰策略决定的redis的内存使用...
    99+
    2023-06-25
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作