Redis如何做到内存高效利用?过期key删除术解析!

news2024/11/17 9:08:28

大家好,我是小米,一个热衷于分享技术的小伙伴。今天我要和大家探讨一个关于 Redis 的话题:删除过期key。在使用 Redis 进行数据存储和缓存时,我们经常会遇到过期数据的处理问题。接下来,我将为大家介绍为什么要删除过期key、删除过期key的几种方式以及为什么要使用定期删除+惰性删除的原因。

 

为什么要删除过期key

在 Redis 中,key 的过期时间是一个非常重要的概念。当我们设置了 key 的过期时间后,Redis 会自动在该时间到期后将其删除。为什么要删除过期key呢?目的就是为了尽量回收内存中的无用空间。如果我们不及时删除过期key,那么这些占据着宝贵内存空间的过期数据就会一直存在,导致内存浪费。因此,删除过期key是为了优化内存使用提高系统的性能资源利用率

什么是定期删除

定期删除:定期删除是 Redis 默认的过期key删除策略。它是通过后台轮询方式来检查并删除过期的key。具体操作是 Redis 每隔一段时间(默认为每秒钟10次)从设置了过期时间的key中随机抽取一部分进行检查,并删除其中已过期的key。

优点:

  • 简单直观,易于实现。
  • 对于大部分业务场景,能够有效地清理过期数据,释放内存。

缺点:

  • 删除操作是在后台线程进行的,不能立即释放内存。
  • 如果过期的key数量较多,或者在某个时间点集中过期大量key,定期删除可能无法及时清理所有过期key。

什么是惰性删除

惰性删除:惰性删除是 Redis 另一种删除过期key的策略。它是在客户端请求获取某个key的时候,Redis 会先判断该key是否过期,如果过期则立即删除。这种方式能够确保获取到的数据都是有效的,避免了读取过期数据的问题。

优点:

  • 实时性强,能够立即释放内存。
  • 保证客户端获取的数据都是有效的。

缺点:

  • 每次请求都需要判断key是否过期,增加了额外的计算开销。
  • 对于长时间不被访问的key,可能会一直存留在内存中,占据内存空间。

定期删除+惰性删除

为了兼顾效率和内存空间的优化,我们通常会同时使用定期删除和惰性删除两种方式。

定期删除可以定期清理大量过期key,避免内存长时间被过期数据占用,但不能立即释放内存。而惰性删除能够在请求时即时删除过期key,确保数据的有效性,但对于长时间不被访问的key可能会一直占用内存。

通过定期删除和惰性删除的结合应用,我们可以在保证数据有效性的同时,最大限度地回收内存空间,提高系统性能。

总结

在 Redis 中,删除过期key是为了回收无用内存空间优化系统性能。我们可以使用定期删除和惰性删除两种方式来处理过期key。定期删除通过后台轮询来清理过期key,惰性删除则在客户端请求时判断并删除过期key。通过使用定期删除和惰性删除的组合,我们可以在保证数据有效性的同时,最大限度地释放内存空间。

END

希望今天的分享能够帮助大家更好地理解 Redis 中删除过期key的原理和应用。如果你对 Redis 还有更多疑问或者想了解其他技术知识,欢迎在留言区与我交流。感谢大家的阅读,我们下期再见!

 

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

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

相关文章

很多人都在考的PMP认证到底有什么用?考试内容难不难?

工作几年之后,很多人都会选择提升自己,从而达到升职加薪的目的,而除了学习专业的技能外,考取一份含金量高的证书,也是非常重要的途径,PMP的证书在业界内的名气很大,该证书是由美国项目管理协会&…

JSP工作原理

一、JSP--一门远古的技术 JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。 JSP这门技术的最大特点在于,写JSP就行html,但是html只能提供静态数据,而Jsp技术可以嵌套…

【C++】容器篇(二)——List的基本概述以及模拟实现

前言: 在上期,我们学习了STL库中的第一个容器--vector ,今天我将给大家介绍的是 库中的另外一个容器--List。其实,有了之前学习 vector 的知识,对于List 的学习成本就很低了。 目录 (一)基本介…

Windows古老Bug损坏SSD/HDD,Win7到Win11全遭殃

去年微软确认了 Windows 12 将在2024年发布,Win11 的更新变为了小的功能更新。 今年3月 Win11 Moment 2 带来了包括任务栏在内的小更新,Moment 3 在这两天就会出来。 Win11 的更新明显放缓,也让用户松了口气。 因为自古以来 Windows 更新大…

5.7 文件I/O(文件IO打开和关闭)

目录 文件描述符 open open-示例1 open-示例2 close 笔记 文件描述符 每个打开的文件都对应一个文件描述符。 文件描述符是一个非负整数。Linux为程序中每个打开的文件分配一个文件描述符。 文件描述符从0开始分配,依次递增。 文件IO操作通过文件描述符来完…

【多线程】常见面试题

1.你知道线程与进程的区别吗? 进程是系统进行资源分配和调度的一个独立单位,线程是程序执行的最小单位,一个进程必然有一条线程(主线程)。进程有自己的内存地址空间,线程只独享指令流执行的必要资源&#…

毫米波雷达信号处理中的静止目标(静态杂波)滤除问题

说明 杂波及其消除是雷达信号处理中的一个很重要的话题,不过对于车载毫米波雷达,考虑到其应用场景和作用范围,关于杂波我们需要考虑的东西其实并没有比如预警雷达、机载SAR雷达等那么多。特别是车载4D雷达的出现,杂波这个概念已经…

【Linux系统编程(文件编程)】之创建、打开文件

文章目录 一、前言二、打开文件、创建文件1. man手册使用起来2. open函数参数 三、文件权限四、打开、创建 的代码示例五、文件创建、打开的补充O_EXCLO_APPENDO_TRUNCcreat创建文件函数 一、前言 linux下,一切皆文件。学好对文件的操作是很重要的,会在…

pytorch:nn.ModuleList和nn.Sequential、list的用法以及区别

文章目录 在构建网络的时候,pytorch有一些基础概念很重要,比如nn.Module,nn.ModuleList,nn.Sequential,这些类我们称为为容器(containers),可参考containers。本文中我们主要学习nn.…

3D模型渲染引擎6大特点解读:助力AR/VR呈现惊叹的视觉效果!

一、用于桌面、移动和 AR/VR 应用程序的2D和3D图形引擎 HOOPS Visualize是一个3D图形SDK,可以快速开发高性能、跨平台的工程应用程序。主要特点包括: HOOPS Visualize的基石是图形内核,这是一种功能齐全、以工程为中心的场景图形技术&#…

项目实战(cloud)--配置中心Config(码云来做一个配置中心)

服务的拆分原则&#xff1a; 单体应用向微服的一个改造&#xff1a; 搭建一个聚合项目 创建一个maven项目 父项目 pom <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"…

uCOSii信号量

uCOSii信号量 主要用来测试使用uCOSii“创建信号量,发送信号量&#xff0c;接收信号量,删除信号量”。 学习uCOSii一定要先了解os_cfg.h文件。 信号量管理函数如下&#xff1a; OSSemAccept() 无条件地等待请求一个信号量函数,中断服务子程序只能用OSSemAccept()而不能用OS…

Docker介绍、常用命令、项目部署

什么是Docker 简单说&#xff1a;Docker就是一个虚拟机&#xff0c;专业说&#xff1a;它是一个开源的容器平台。它和我们常用的VMware有很多相似的地方。 名词解释 镜像/images 由本体打包出来的文件。并不是文件本身&#xff0c;但是具有该文件的功能。举个不太贴切的例子&…

离线安装python、pip和python的第三方库

1.安装python3 1.1下载python3 安装python3的网址为点击这里 选择想要下载的对应版本进行下载&#xff0c;这里使用的是63位的Windows系统&#xff0c;因此下载的选的是&#xff1a; 下载后如图&#xff1a; python-3.7.9-amd64.exe是python3的安装程序 1.2安装python3 1…

5月第3周榜单丨飞瓜数据B站UP主排行榜单(哔哩哔哩)发布!

飞瓜轻数发布2023年5月15日-5月21日飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的B…

BLE协议栈结构

// 开坑BLE协议栈 0 镇楼图 接下来会自下往上粗略分析各个层级&#xff0c;后续会有对各层的细致解读 1 CONTROLLER 1.1 PHY BLE使用ISM频段&#xff08;频率范围是2.400-2.4835 GHz&#xff09;。将整个频带分为40份&#xff0c;每份的带宽为2MHz&#xff0c;称作RF Chann…

CASAIM与北京体育大学达成合作,高精度三维扫描技术助力体育运动装备仿真分析

近期&#xff0c;CASAIM与北京体育大学开展合作交流&#xff0c;基于高精度三维扫描技术助力体育运动装备仿真分析&#xff0c;为体育运动装备可靠性研究提供准确的数据参考。 北京体育大学是全国重点院校、国家“211工程”重点建设大学、国家首批“双一流”建设高校&#xff0…

基于springboot+vue社区团购系统(分前后台springboot+mybatis+mysql+maven+vue+html)

基于springbootvue社区团购系统 一、项目简介二、技术实现三、开发运行环境四、系统功能五、页面展示六、数据库七、项目结构八、部分代码展示九、源码地址 一、项目简介 本项目是一套基于springboot社区团购系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项…

【正点原子STM32连载】 第十六章 外部中断实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html 第十六…