Redis内存管理——针对实习面试

目录

  • Redis内存管理
    • Redis的内存淘汰机制有哪些?
    • 说说过期的数据的删除策略?
    • Redis是如何判断数据是否过期的?
    • Redis如何处理大Key问题?

Redis内存管理

在这里插入图片描述

Redis的内存淘汰机制有哪些?

Redis的内存淘汰机制主要包括以下几种策略:

  1. noeviction:这是默认策略,当内存使用达到限制时,Redis会拒绝新的写入操作,并返回错误,但不会淘汰任何数据。

  2. allkeys-lru:在所有键中,基于最近最少使用(LRU)算法淘汰数据。Redis会维护一个近似的LRU列表,并不保证完全精确,但是对大多数使用场景来说是足够的。

  3. allkeys-lfu:在所有键中,基于最少频率使用(LFU)算法淘汰数据。LFU算法会跟踪每个键的访问频率,并淘汰访问频率最低的键。

  4. volatile-lru:仅在设置了过期时间的键中,基于LRU算法淘汰数据。

  5. volatile-lfu:仅在设置了过期时间的键中,基于LFU算法淘汰数据。

  6. volatile-random:在设置了过期时间的键随机选择淘汰。

  7. allkeys-random:在所有键中随机选择淘汰。

  8. volatile-ttl:在设置了过期时间的键中,淘汰那些TTL(Time To Live)值最小的键,也就是即将过期的键。

说说过期的数据的删除策略?

Redis处理过期数据的删除策略主要包括两种:惰性删除(Lazy Expiration)和定期删除(Active Expiration)。

  1. 惰性删除(Lazy Expiration)

    • 这种方式是在客户端尝试访问一个键时,Redis会检查该键是否已经过期。如果键已过期,Redis会立即删除该键并返回空值。这种方式确保了过期键不会返回给客户端,但并不保证立即从内存中删除。
  2. 定期删除(Active Expiration)

    • Redis还会使用定期删除来清除过期键。定期删除是通过每秒执行一定数量的随机键的过期检查和删除操作来实现的。Redis会在后台线程中执行这些操作,以确保过期键从内存中被及时清除。
    • Redis默认每秒进行10次过期扫描,每次从过期字典中随机选出20个key,删除这20个key中已经过期的key。如果过期的key的比例超过1/4,那就重复步骤(1)。这种定期的清理操作确保了即便某些Key长时间未被访问,也能在一定时间内被删除,防止内存过度占用。

这两种策略的结合使用,使得Redis能够在合理使用CPU时间和避免内存浪费之间取得平衡
惰性删除确保了过期键不会被访问而定期删除则确保了过期键能够及时从内存中清除
通过合理配置这两种策略,Redis能够有效地管理内存中的过期数据。

Redis是如何判断数据是否过期的?

Redis判断数据是否过期的主要机制是基于一个称为“过期字典”的数据结构。以下是具体的判断流程:

  1. 过期字典(expires dict):每当一个key被设置了一个过期时间,Redis就会将该key及其过期时间存储在一个专门的字典结构中,这个字典被称为过期字典。过期字典的键是指向数据库中的某个key对象的指针,而值是一个长整型整数,保存了该key的过期时间,这个时间是一个以毫秒为单位的UNIX时间戳。

  2. 查询时检查:当客户端尝试访问或修改一个key时,Redis会首先检查该key是否存在于过期字典中。如果存在,Redis会获取该key的过期时间,并与当前系统时间进行比较

  3. 过期时间对比:如果key的过期时间大于当前系统时间,那么Redis认为该key尚未过期,可以正常访问或修改。如果key的过期时间小于或等于当前系统时间,Redis则认为该key已经过期,需要进行删除处理

  4. 惰性删除与定期删除:Redis采用了惰性删除定期删除两种策略来处理过期的key。惰性删除是指在访问key时才检查是否过期,而定期删除则是Redis定期检查并删除过期的key

通过这种机制,Redis能够有效地管理带有过期时间的key,确保过期的数据不会被访问,并在适当的时候释放内存空间。

Redis如何处理大Key问题?

Redis处理大Key问题可以采取以下几种策略:

  1. 拆分大Key将一个大Key拆分成多个小Key,减少单个操作对性能的影响。例如,可以将一个大的列表拆分为多个小列表,或者将一个大的哈希表拆分为多个小哈希表。

  2. 使用Hash结构:对于具有多个属性的对象,使用Redis的Hash类型存储,将大Key拆分成多个Field(字段),有效减少内存使用并提高性能。

  3. 数据压缩对要存储的数据进行压缩,压缩之后再进行存储,以减少大Key的内存占用。

  4. 选择合适的数据结构根据数据的特性选择合适的Redis数据结构,比如一些用String存储的场景,可以考虑使用Hash、Set等结构进行优化。

  5. 限制大Key的大小:在应用层面,可以限制存储到Redis中的Key的最大大小,例如,在写入数据之前检查数据的大小,并进行必要的切分。

  6. 使用Redis集群:采用Redis集群方式进行部署,然后将大Key散落到不同的服务器上面,加快响应速度。

  7. 定期监控和清理:定期监控Redis实例中的大Key,并根据需要进行清理。可以使用定期的自动化脚本检查和处理大Key,以确保Redis实例的稳定性。

  8. 异步删除:使用Redis 4.0+版本的UNLINK命令异步删除大Key,减少对Redis性能的影响。

  9. 数据分页:对大集合进行分页读取,避免一次性加载大量数据。

  10. 监控和预警:通过监控工具及时发现大Key问题,并设置预警机制。

  11. 数据过期:对于大key中不经常使用的数据,可以利用Redis的过期特性,设置合理的过期时间,使其自动删除,从而降低内存占用。

  12. 数据压缩:对于大key中的数据,可以考虑使用压缩算法进行压缩存储,以减少其占用的内存空间。

这些策略可以帮助优化Redis中的大Key问题,提高Redis的性能和稳定性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/4537.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

2024年中国工业大模型行业发展研究报告|附43页PDF文件下载

工业大模型伴随着大模型技术的发展,逐渐渗透至工业,处于萌芽阶段。 就大模型的本质而言,是由一系列参数化的数学函数组成的计算系统,且是一个概率模型,其工作机制是基于概率和统计推动进行的,而非真正的理解…

hhdb数据库介绍(2-1)

数据库基础服务 HHDB Server支持MySQL原生通讯协议,支持数据定义、数据操作、分区表、数据库管理语句、事务、锁、字符集与校对集等常用数据库基础服务。其中在数据操作中解决了跨库查询和跨库数据排序等难点问题。并支持强一致事务与跨库死锁检测。 数据定义 支…

道品科技的水肥一体化智能灌溉:开启现代农业的创新征程

水肥一体化智能灌溉作为一种现代农业技术,其通过对水分与养分供应的有效整合,致力于营造作物的最佳生长环境。此项技术的核心要义在于凭借智能化系统精准把控灌溉与施肥的流程,进而提升水资源的利用效率,降低肥料的浪费程度&#…

微信小程序开发,诗词鉴赏app,诗词搜索实现(三)

微信小程序开发,诗词鉴赏app(一): https://blog.csdn.net/jky_yihuangxing/article/details/143501681微信小程序开发,诗词鉴赏app,诗词推荐实现(二):https://blog.csdn.net/jky_yih…

【前端】JavaScript 方法速查大全-函数、正则、格式化、转换、进制、 XSS 转义(四)

🔥 前言 在现代前端开发中,JavaScript 是不可或缺的语言。无论是处理数据、操作 DOM,还是进行复杂的逻辑运算,掌握 JavaScript 的各种方法都是每位开发者的必修课。本文将为您提供一个全面、系统的 JavaScript 方法参考&#xff…

C语言void *特殊的指针类型:使用

一: 1通用指针类型 void * 表示无类型指针,它可以指向任何类型的数据对象。与其他具体类型的指针(如 int *、char * 等)不同,void * 指针不指向特定类型的数据,因此在使用时需要进行适当的类型转换。 2…

浅谈风力发电并网系统的控制和优化策略

0引言 风能作为一种可再生资源,以其低污染和巨大储量的优势备受青睐。近年来,随着绿色发展战略的持续推进,我国在风力发电技术领域取得了显著成就。风力发电的总装机容量和并网规模持续增长,为农业生产和居民生活提供了丰富的电力…

对想从事大模型领域的技术开发者的建议或看法

“ 学习技术之前,我们首先要搞明白的是我们想要什么,想做什么,而不是稀里糊涂的去学习技术**”** 大模型技术作为目前比较火的技术之一,有很多技术人员想从事大模型方面的开发,但又不知道该怎么入手,应该学…

433、315通信、ev1527、2262编码

目录 ASK介绍EV1527编码芯片介绍模块介绍无线发射芯片无线接收芯片解码程序发射电路原理图 ASK介绍 ASK是幅移键控,通过调幅将数据发送出去,所以发送与接收都是多位二进制数。 ASK如何区分0和1? 0:发送 433.92Mhz 无线波形&…

面向生成式 AI 的向量数据库:架构,性能与未来趋势

导读 向量数据库是高效处理和准确检索高维数据的基石,对于生成式 AI 技术而言至关重要。本文将分享向量数据库的架构设计和实现中的关键点。 主要分为五个方面: 向量数据库背景介绍 Milvus 整体架构设计 性能的关键-索引 面向 AI 持续进化 01 向量…

vulhub之zabbix

zabbix是一款服务器监控软件,其由server、agent、web等模块组成,其中web模块由PHP编写,用来显示数据库中的结果。能够监控各种网络参数以及服务器健康性和完整性。 zabbix的详细介绍: https://blog.csdn.net/wt334502157/article/details/117994107 zabbix latest.php S…

介绍一下如何生成随机数(c基础)

适合对象 c语言初学者 总结语言用色&#xff0c;个人强调用红色&#xff0c;注意为易错点&#xff0c;若有问题请告诉我谢谢。(建议通过目录观看)。一定要自己动手打代码。 rand函数 是生成随机数的函数&#xff0c;但实则是伪随机数。(即是同一个值) 格式 #include<st…

java案例6-1库存管理系统

【案例介绍】 1.任务描述 像商城和超市这样的地方&#xff0c;都需要有自己的库房&#xff0c;并且库房商品的库存变化有专人记录&#xff0c;这样才能保证商城和超市正常运转。 本例要求编写一个程序&#xff0c;模拟库存管理系统。该系统主要包括系统首页、商品入库、商品显示…

【嵌入式Linux】Linux设备树详解

设备树是是Linux中一种用于描述硬件配置的数据结构&#xff0c;它在系统启动时提供给内核&#xff0c;以便内核能够识别和配置硬件资源。设备树在嵌入式Linux系统中尤其重要&#xff0c;因为这些系统通常不具备标准的硬件配置&#xff0c;需要根据实际的硬件配置来动态配置内核…

逻辑卷建立

逻辑卷 lvm逻辑卷即为&#xff1a;logical volume manager逻辑管理卷&#xff0c;是linux系统下管理硬盘分区的一种机制&#xff0c;lvm适合于管理大型存储文件&#xff0c;用户可以动态的对磁盘进行扩容 作用 lvm&#xff1a;linux系统的一个重要的存储技术 不同的硬盘的不…

【持续更新】【NLP项目】【自然语言处理】智能聊天机器人——“有问必答”【Chatbot】第2章、《模式一:问候模式》

智能聊天机器人——“有问必答” 【注】该项目已开源&#xff0c;开源地址为&#xff1a;链接&#xff0c;代码更新可能不及时。 第2章、《模式一&#xff1a;问候模式》 主窗体的布局如下图所示&#xff1a; 共九种功能模式&#xff0c;最下方为关闭窗口按钮。 点击问候模…

时序预测 | Matlab基于TSA-LSTM-Attention被囊群优化算法优化长短期记忆网络融合注意力机制多变量多步时间序列预测

时序预测 | Matlab基于TSA-LSTM-Attention多变量多步预测 目录 时序预测 | Matlab基于TSA-LSTM-Attention多变量多步预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 | Matlab基于TSA-LSTM-Attention被囊群优化算法优化长短期记忆网络融合注意力机制多变量多…

attributeerror: ‘FreeTypeFont‘ object has no attribute ‘getsize‘问题

我在训练yolov9的时候报错&#xff1a;attributeerror: ‘FreeTypeFont‘ object has no attribute ‘getsize‘。看过很多博客分析&#xff0c;都是说FreeTypeFont 字体的原因&#xff0c;其实真实问题出现yolo版本安装的Pillow库更新后&#xff0c;getsize&#xff08;&#…

三维天地:数字技术推动汽车产业实验室管理变革创新

近日,2024汽车技术与装备发展论坛在苏州成功召开。论坛以“共筑汽车产业新质生产力”为主题,聚焦新技术、新装备、新生态展开深入研讨,探索装备制造与汽车产业的融合发展路径。北京三维天地科技股份有限公司受邀参会。 在同期举办的检测认证高质量发展论坛上,三维天地咨询总监宫…

产品人必读书籍丨这本书告诉了我在AI时代如何成为一名顶级PM!!

《人工智能产品经理》——AI时代的PM修炼手册&#xff0c;这是一本不太工具的工具书。 很多人不了解产品经理需要具备的能力和素质。那么产品经理人工智能呢&#xff1f;这就更懵了&#xff0c;全是新词汇组成的新职业&#xff0c;到底怎样才算合格的人工智能产品经理&#x…