广告
返回顶部
首页 > 资讯 > 数据库 >Redis删除策略和逐出策略是什么
  • 290
分享到

Redis删除策略和逐出策略是什么

2024-04-02 19:04:59 290人浏览 八月长安
摘要

这篇文章主要介绍了Redis删除策略和逐出策略是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。过期数据先来看三个key值,分别为sex、na

这篇文章主要介绍了Redis删除策略和逐出策略是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

过期数据

先来看三个key值,分别为sex、name、age。

这三个值设置的指令为 set name kaka setex age 100 24 setex sex 10 1

Redis删除策略和逐出策略是什么在redis中我们可以使用ttl来获取某个key的状态,下面我们来使用ttl分别获取一下上边name、age、sex的状态

可以看到出来了三个值,分别为 -1  775   -2

那么这三个值给出的信息是什么呢!

  • -1 表示永久有效的数据
  • 775 这个值是设置在age上,使用的指令为setex age 1000 24,表示为剩余有效时间
  • -2 表示已经过期的数据,或者是被删除的数据,或者说是么有定义的数据Redis删除策略和逐出策略是什么

过期数据的存储结构

  • 当我们设置一个带有时效性的name时,redis存储的是一个内存地址0x10101
  • 然后redis会再开辟一个空间用来存储带有时效性的key
  • 但是存储方式是key对应的内存地址  和  过期时间Redis删除策略和逐出策略是什么那么今天我们所说的redis删除策略,就是删除的这部分数据。

定时删除

定时删除就是写一个定时器,然后当key的时间过期后,定时器任务立即对过期的key进行删除

优点:可想而知key到期就删,肯定对内存时最友好的,节约内存

缺点:redis单线程的特性是所有的命令都在按照一定的顺序进行执行。key值到期就删cpu的压力就会变大,会直接影响到redis服务器响应时间和io

定时删除就是用时间来换取空间

当执行完定时删除后,key值对应的数据会被删除,同时在过期的内存区里边也会直接删除。Redis删除策略和逐出策略是什么

惰性删除

在来看这个图当key值过期后不会直接删除,那是什么时候删除呢!继续往下看Redis删除策略和逐出策略是什么

当我们使用惰性删除时,数据到期了也不会自动删除,那么他的删除方式是,在下一次在获取这个key值时,会做一个判断,判断这个key是否过期,如果过期了在执行删除。

也就是说当再次执行get name时  会走一个函数expirelfNeeded()  这个函数就是判断此key是否过期的。过期的返回nil,然后从内存在进行删除

Redis删除策略和逐出策略是什么优点:会减少一定的CPU性能,只有到必须要删的时候才会删除

缺点:那肯定就是内存压力大了,例如一些热点新闻,热点过了就基本没人访问了,没有人访问这个key就一直存在,就会出现长期占用一定的内存空间

也就说这种方式是用空间换时间

定期删除

在上文中我们提及了俩种删除方式,一种是定时删除,一种是惰性删除。一个是用空间换时间。一个是用时间换空间。俩种方案都是比较极端的方式。那么接下来我们在来看看定期删除的实现方案。

先来看一下redis的存储空间,一共有默认为16个,在redis.conf里边有一个配置参数database这个参数控制的。每个数据库都有自己的过期分区,里边存储就是数据地址  和  数据过期时间。

Redis删除策略和逐出策略是什么实现方式

redis在启动时,会取读取server下的hz的值,默认为10。这个值直接在终端使用info server就可以查看的到

Redis删除策略和逐出策略是什么然后会每秒钟执行server下hz次  进行serverCron()轮询

继续使用databasesCron对redis的16个库进行挨个访问信息

访问时候会再执行activeExpireCycel对每个expires[*]逐一进行检测,每个执行的时间为250ms / server hz这个参数

在对每个expirs[*]逐一检测时,会随机拿出ACTIVE_EXPIRE_CYCLE_SLOW_TIME_PERC个可以进行检测

  • 如果key超时,直接删除key
  • 一轮中删除的key数量>ACTIVE_EXPIRE_CYCLE_SLOW_TIME_PERC*25%继续循环该过程
  • 如果一轮中删除的key数量<=ACTIVE_EXPIRE_CYCLE_SLOW_TIME_PERC25% ,检查下一个expires[]

那么现在问题来了,我们的250ms / hz这个时间执行完了,但是把expires的16个数据库没有循环完怎么办呢!  下次来在循环那个库呢!  其实这个值是有存的,就是current_db这个值。这个值会记录activeExpireCycel 下次进入那个expires[*]执行Redis删除策略和逐出策略是什么特点1:CPU使用没有高峰值,检测频率自定义设置

特点2:内存压力不会很大, 长时间占用的内存会被持续的清理

逐出算法

在上文中我们说了三种删除策略,但是这三种策略都是相对于设置了有效期的key才会有效。

那现在我们的redis使用的内存不足了,就会使用逐出策略来保证redis的正常使用。

redis在每次执行命令前会调用freeMemorylfNeeded()检测内存是否充足,当不充足时就会清理一些key,这种清除数据的策略称为逐出策略。

redis最大可使用内存的参数为:maxmemory  默认为0   指的是占用物理内存的比例   一般设置50%就可以了

每次选取待删除key的个数:maxmemory-samples

删除策略:maxmemory-policy

「下面我们来着重说明删除策略」

  • 检测易失数据(也就是我们设置了有效期,但是还没有到期的数据,就是上文expires[*])
    • volatile-lru:挑选最近少使用的数据
    • volatile-lfu:挑选最近使用次数最少的数据
    • volatile-ttl:挑选将要淘汰的数据
    • volatile-random:随机选择

接下来看一幅图

  • 9s就是现在的时间

  • 距离9s最长的一个key就是age

  • 使用次数最少的就是gender这个key

  • 如果按照volatile-lru就会把age删除掉

  • 如果按照volatile-lfu就会把gender删除掉Redis删除策略和逐出策略是什么

  • 检测全部数据

    • allkeys-lru:挑选最近少使用的数据
    • allkeys-lfu:挑选最近使用次数最少的数据
    • allkeys-random:全库随机删除
  • 放弃数据驱逐

    • no-enviction  : 数据不会进行任何的删除,直到内存用完,引发oom错误。

感谢你能够认真阅读完这篇文章,希望小编分享Redis删除策略和逐出策略是什么内容对大家有帮助,同时也希望大家多多支持编程网,关注编程网数据库频道,遇到问题就找编程网,详细的解决方法等着你来学习!

您可能感兴趣的文档:

--结束END--

本文标题: Redis删除策略和逐出策略是什么

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis删除策略和逐出策略是什么
    这篇文章主要介绍了Redis删除策略和逐出策略是什么,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。过期数据先来看三个key值,分别为sex、na...
    99+
    2022-10-18
  • redis 数据删除策略和逐出算法
    数据存储和有效期 在 redis 工作流程中,过期的数据并不需要马上就要执行删除操作。因为这些删不删除只是一种状态表示,可以异步的去处理,在不忙的时候去把这些不紧急的删除操作做了,从而保证 redis 的高效 数据的存储 在re...
    99+
    2016-04-17
    redis 数据删除策略和逐出算法
  • redis实现数据删除策略和逐出算法
    这篇文章将为大家详细讲解有关redis实现数据删除策略和逐出算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。数据存储和有效期在 redis 工作流程中,过期的数据并不需...
    99+
    2022-10-18
  • Redis删除策略的三种方法及逐出算法
    目录一、前言二、Redis中的数据特征三、时效性数据储存结构四、数据删除策略1、定时删除2、惰性删除3、定期删除五、删除策略对比六、逐出算法1、概念引入2、八种配置一、前言 在文章开...
    99+
    2022-11-13
    Redis删除策略 Redis逐出算法
  • Redis的内存淘汰策略和过期删除策略的区别是什么
    这篇文章主要介绍“Redis的内存淘汰策略和过期删除策略的区别是什么”,在日常操作中,相信很多人在Redis的内存淘汰策略和过期删除策略的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方...
    99+
    2022-10-19
  • Redis过期删除策略与内存淘汰策略
    目录过期删除策略设置Redis中key的过期时间 (单位:秒)常见的三种过期删除策略Redis使用用的过期删除策略Redis的定期删除的流程内存淘汰策略设置Redis最大运行内存Redis 内存淘汰策略有哪些?LRU 算...
    99+
    2022-09-02
  • Redis的内存淘汰策略和过期删除策略有什么区别
    本文小编为大家详细介绍“Redis的内存淘汰策略和过期删除策略有什么区别”,内容详细,步骤清晰,细节处理妥当,希望这篇“Redis的内存淘汰策略和过期删除策略有什么区别”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-07-02
  • Redis 的内存淘汰策略和过期删除策略的区别
    目录前言过期删除策略如何设置过期时间?如何判定 key 已过期了?过期删除策略有哪些?Redis 过期删除策略是什么?内存淘汰策略如何设置 Redis 最大运行内存?Redis 内存淘汰策略有哪些?LRU 算法和 LFU...
    99+
    2022-07-04
    Redis 内存淘汰策略 Redis 过期删除策略
  • Redis 的内存淘汰策略和过期删除策略的区别
    目录前言过期删除策略如何设置过期时间?如何判定 key 已过期了?过期删除策略有哪些?Redis 过期删除策略是什么?内存淘汰策略如何设置 Redis 最大运行内存?Redis 内存...
    99+
    2022-11-13
  • Redis过期键删除策略的原理是什么
    这篇“Redis过期键删除策略的原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“R...
    99+
    2022-10-19
  • 浅谈Redis中的内存淘汰策略和过期键删除策略
    目录8种淘汰策略过期键的删除策略总结 redis是我们现在最常用的一个工具,帮助我们建设系统的高可用,高性能。 而且我们都知道redis是一个完全基于内存的工具,这也是redis速...
    99+
    2022-11-12
  • redis的过期删除策略怎么写
    在Redis中,有两种过期删除策略可以选择:1. 惰性删除策略(Lazy Expiration):当客户端尝试访问一个已过期的键时,...
    99+
    2023-08-20
    redis
  • Redis系列(五):Redis的过期键删除策略
    Redis的过期键删除策略。 本篇博客是Redis系列的第5篇,主要讲解下Redis的过期键删除策略。 本系列的前4篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装 Redis系...
    99+
    2014-11-06
    Redis系列(五):Redis的过期键删除策略
  • Redis 过期删除策略和内存淘汰机制
          Redis 设置过期时间 Redis 有四个不同的命令可以用于设置键的生存时间(键可以存在多久)或过期时间(键什么时候会被删除): EXPIRE ——将键 key 的生存时间设置为 ttl 秒。 PEXPIRE ——...
    99+
    2015-02-08
    Redis 过期删除策略和内存淘汰机制
  • Redis中的过期删除策略和内存淘汰机制是什么
    这篇文章主要讲解了“Redis中的过期删除策略和内存淘汰机制是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Redis中的过期删除策略和内存淘汰机制是什么”吧!Redis 中 key 的...
    99+
    2023-06-29
  • Redis持久化策略是什么
    本篇内容介绍了“Redis持久化策略是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Redis(Rem...
    99+
    2022-11-30
    redis
  • Redis的过期策略是什么
    本篇内容介绍了“Redis的过期策略是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!保存过期时间Redis可以为每个key设置过期时间,...
    99+
    2023-06-22
  • Redis的过期键删除策略原理说明
    目录惰性删除定期删除惰性删除策略定期删除策略的实现Redis服务器实际使用的是惰性删除和定期删除两种策略:通过配合使用这两种删除策略,服务器可以很好地在合理使用CPU时间和避免浪费内存空间之间取得平衡。 惰性删除 惰性删...
    99+
    2022-08-27
  • Redis中的过期策略是什么
    这篇文章将为大家详细讲解有关Redis中的过期策略是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Redis的过期策略redis主要有2种过期删除策略惰性删除惰性删除...
    99+
    2022-10-19
  • Redis中键的过期删除策略深入讲解
    如果一个键过期了,那么它什么时候会被删除呢? 这个问题有三种可能的答案,它们分别代表了三种不同的删除策略: 定时删除:在设置键的过期时间的同时,创建一个定时器( timer ). 让定时器...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作