Redis 内存管理机制
Redis作为一个内存数据库,内存资源非常珍贵。因此,Redis引入了3种内存管理机制来释放不必要的内存,包括定期删除、惰性删除和内存淘汰机制。
定期删除
定期删除是Redis内存管理机制的一种,它用于删除过期的键值对。Redis每隔 100ms (可修改)时间就会随机选择一些键值对,将过期的键值对删除。而不是每次遍历所有的键值对,避免因为遍历所有的键值对并判断是否过期而消耗大量的性能。
定期删除可以通过设置过期时间(expire)来实现,但是存在一个问题:如果一个键值对很少被访问,即使它已经过期,也不会被删除,因为 Redis 每隔 100ms 使用随机算法选择一些键值对,并判断该键值对是否过期,而不会主动遍历所有键值对(也就是有可能很多次随机都没随机到某些过期的 key)。
惰性删除
Redis还实现了一种基于惰性删除的内存回收机制,也就是说,当一个键值对过期之后,并不会立即从内存中删除。相反,Redis会等到下次访问这个键值对时,才会将其删除。这种惰性删除机制可以保证内存的高效利用,将一些过期的但是又没有被 Redis 遍历到的数据删除,避免因过期键值对带来的空间浪费,提高Redis的性能和效率。
内存淘汰机制
虽然 Redis 的内存管理机制很高效,但是当内存不足时,Redis 必须采取一些措施来决定哪些键值对需要被删除。这时就需要使用内存淘汰机制。Redis 提供了8种内存淘汰策略:
1. 全局淘汰:
1)allkeys-lru:淘汰范围是所有 keys,淘汰最久未使用的 key
2)allkeys-lfu:淘汰范围是所有 keys,淘汰使用频次最少的
3)allkeys-random:淘汰范围:所有 keys,随机淘汰 key
2. 淘汰 expire :
1)volatile-lru:淘汰范围:所有设置了 expire 时间的 keys,淘汰最久未使用的 key
2)volatile-lfu:淘汰范围:所有设置了 expire 时间的 keys,淘汰使用频次最少的 key
3)volatile-random:淘汰范围:所有设置了 expire 时间的 keys,随机淘汰 key
4)volatile-ttl:淘汰范围:所有设置了 expire 时间的 keys,淘汰 ttl 剩余时间最少的 key
3. 不淘汰:
1)noeviction:不淘汰,意味着达到限制时,将无法存储
需要注意的是,Redis的内存淘汰机制仅在内存不足时才会启动,因此在使用 Redis 时,应该保证足够的内存资源,以避免不必要的内存回收和性能损失。
总而言之,以上三种内存管理机制都是Redis内部为了更好地管理内存而实现的。它们可以让Redis更高效地利用内存,减少空间浪费,并提高性能。
相关文章:
Redis 内存管理机制
Redis作为一个内存数据库,内存资源非常珍贵。因此,Redis引入了3种内存管理机制来释放不必要的内存,包括定期删除、惰性删除和内存淘汰机制。 定期删除 定期删除是Redis内存管理机制的一种,它用于删除过期的键值对。Redis每隔 10…...
Apache Zeppelin系列教程第九篇——Zeppelin NoteBook数据缓存
背景 在使用Zeppelin JDBC Intercepter 对于Hive 数据进行查询过程中,如果遇到非常复杂的sql,查询效率是非常慢 比如: select dt,count(*) from table group by dt做过数据开发的同学都知道,在hive sql查询过程中,hive…...
用代码实现一个简单计算器
作者主页:paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者:大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于《C语言》专栏,本专栏是针对于大学生,编程小白精心打造…...
运维圣经:挖矿木马应急响应指南
目录 挖矿木马简介 挖矿流程 挖矿木马应急响应 一. 隔离被感染主机 二. 确定挖矿进程 三. 挖矿木马清除 1、阻断矿池地址的连接 2、清除挖矿定时任务、启动项等 3、禁用可疑用户 4、定位挖矿木马文件的位置并删除 5、全盘杀毒、加固 挖矿木马简介 挖矿:…...
【Flutter】Flutter 如何获取安装来源信息
文章目录 一、 前言二、 安装来源信息的基本概念1. 什么是安装来源信息2. 为什么我们需要获取安装来源信息 三、 如何在 Flutter 中获取安装来源信息1. 准备工作2. 安装必要的依赖库3. 编写代码获取安装来源信息 四、 完整示例代码五、总结 一、 前言 在这篇文章中,…...
Stimulsoft Reports用户手册:Report Designer介绍
Stimulsoft Reports.Net是一个基于.NET框架的报表生成器,能够帮助你创建结构、功能丰富的报表。StimulReport.Net 的报表设计器不仅界面友好,而且使用便捷,能够让你轻松创建所有报表;该报表设计器在报表设计过程中以及报表运行的过…...
跨模态检索论文阅读:Dissecting Deep Metric Learning Losses for Image-Text Retrieval(GOAL)
Dissecting Deep Metric Learning Losses for Image-Text Retrieval 剖析图像文本检索中的深度度量学习损失 2022.10 视觉语义嵌入(VSE)是图像-文本检索中的一种流行的应用方法,它通过学习图像和语言模式之间的联合嵌入空间来保留语义的相似性…...
贪心算法part5 | ● 435. 无重叠区间 ● 763.划分字母区间 ● 56. 合并区间
文章目录 435. 无重叠区间思路思路代码困难 763.划分字母区间思路官方题解代码困难 56. 合并区间思路思路代码 今日收获 435. 无重叠区间 思路 重叠问题都需要先排好序,再贪心 思路代码 func eraseOverlapIntervals(intervals [][]int) int {sort.Slice(interva…...
IMX6ULL裸机篇之SPI实验-ICM20608代码实现
一. SPI 实验 SPI实验:学习如何使用 I.MX6U 的 SPI 接口来驱动 ICM-20608,读取 ICM-20608 的六轴数据。 本文学习 SPI通信实验中,涉及从设备的 SPI代码编写。 之前学习了 SPI 主控芯片代码的编写,如下所示: IMX6ULL…...
51单片机读取DS18B20温度传感器
1.首先我们知道DS18B20是单总线协议,只有一根数据线。所以Data数据线即使发送端又是接收端,同时DS18B20内部接了弱上拉电阻(如图一所示),数据线默认为高电平。有了这些概念,我们就能进行下一步。 图一&…...
set/map学习
我们要开始学习map和set的使用,虽然使用更加复杂,但是STL整体的设计,本身就具有很强的前瞻性和延续性,比如说迭代器等,我们顺着文档来看。这也是除了vector之外最重要的容器,当然还有unordered_map 和 unor…...
JavaScript Web APIs学习总结
以后声明变量我们有限使用哪一个? const 有了变量先给const,如果发现它后面是要被修改的,再改为let 为什么const声明的对象可以修改里面的属性? 因为对象是引用类型,里面存储的是地址,只要地址不变&…...
萤石摄像头RTSP流获取(黑屏解决)
前言 在获取萤石摄像头RTSP视频流时,视频流获取不成功,黑屏并且一直显示缓冲中。下面对获取过程中查阅的资料和解决方案做一下汇总。 打开RTSP 在萤石云视频APP中打开RTSP,【我的】-【工具】-【局域网设备预览】-【开始扫描】-【选择摄像头…...
ThreadLocal引发的内存泄漏分析
预备知识(引用) Object o new Object(); 这个o,我们可以称之为对象引用,而new Object()我们可以称之为在内存中产生了一个对象实例。 当写下 onull时,只是表示o不再指向堆中object的对象实例,不代表这个…...
银行数据治理:数据质量管理实践
现代商业银行日常经营活动中积累了大量数据,这些数据除了支持银行前台业务流程运转之外,越来越多地被用于决策支持领域,风险控制、产品定价、绩效考核等管理决策过程也都需要大量高质量数据支持。银行日常经营决策过程的背后,实质…...
2.7V至25V宽输入电压15A 峰值电流
HT7179是一款高功率异步升压转换器,集成 20mΩ功率开关管,为便携式系统提供高效的 小尺寸解决方案。 HT7179具有2.7V至25V宽输入电压范围,可为 采用单节或两节锂电池,或12V铅酸电池的应 用提供支持。该器件具备15A开关电流能力&a…...
Vue 父子组件应用指南:从基础到实战
文章目录 一、创建父组件二、创建子组件三、在父组件中使用子组件四、父子组件之间的通信1. 数据传递2. 事件传递 Vue.js 是一种流行的 JavaScript 框架,用于构建用户界面。其中,父子组件的概念是 Vue 开发中非常重要的一部分。本文将介绍如何使用 Vue 创…...
todotodo
todotodo...
创建autotool项目
GNU Autotools是linux系统一套自动化编译工具,生成的项目可移植,通过configure && make即可生成目标程序。GNU Autotools组件有:autoscan, aclocal, autoconf, automake,autoheader等。 不用管这些工具的原理,只要知道他们…...
计算机概念
计算机的体系结构 计算机俗称“电脑”computer(kəmˈpjuːtə(r))哈哈,本质上就是一台在各个领域被广泛使用的设备,主要由硬件和软件两大部分组成。 常见的硬件:CPU、内存、硬盘、显卡、主板、键盘、显示器、鼠标、... CPU - 中央处理…...
多维尺度变换(MDS)实战指南:从原理到Python实现
1. 多维尺度变换(MDS)是什么? 多维尺度变换(Multidimensional Scaling,简称MDS)是一种经典的降维算法,它的核心思想是通过保持数据点之间的距离关系,将高维数据映射到低维空间。想象…...
XUnity.AutoTranslator:Unity游戏自动翻译解决方案
XUnity.AutoTranslator:Unity游戏自动翻译解决方案 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator是一款专业的Unity游戏自动翻译插件,能够实时将游戏文本转…...
右键菜单瘦身术:如何用ContextMenuManager让Windows操作效率提升300%
右键菜单瘦身术:如何用ContextMenuManager让Windows操作效率提升300% 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager Windows右键菜单是我们日常操作…...
Llama-3.2V-11B-cot保姆级教程:Streamlit界面按钮/状态/动效设计逻辑
Llama-3.2V-11B-cot保姆级教程:Streamlit界面按钮/状态/动效设计逻辑 1. 工具概览与核心价值 Llama-3.2V-11B-cot是基于Meta多模态大模型开发的高性能视觉推理工具,专为双卡4090环境优化。这个工具最大的特点是让复杂的多模态模型变得简单易用…...
抖音无水印批量下载工具终极指南:免费开源工具助你高效管理内容
抖音无水印批量下载工具终极指南:免费开源工具助你高效管理内容 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 还在为逐个下载抖音视频而烦恼吗?面对喜欢的创作者主页,你…...
Zrlog面试问答及问题解决方案
面试问答 结合 ZrLog 部署(Maven 构建 环境配置 服务部署)的全流程,整理排查 / 运维 / 开发三类高频问题,覆盖场景、原因、解答思路,可直接用于沟通或故障定位: 一、环境准备阶段高频问题 1. 执行 jav…...
3项突破重构浏览体验:从卡顿到丝滑的技术革命
3项突破重构浏览体验:从卡顿到丝滑的技术革命 【免费下载链接】thorium Chromium fork named after radioactive element No. 90. Windows and MacOS/Raspi/Android/Special builds are in different repositories, links are towards the top of the README.md. …...
CYBER-VISION零号协议SolidWorks设计文档智能解读与生成
CYBER-VISION零号协议:让AI读懂你的SolidWorks设计图 每次打开一个复杂的SolidWorks装配体文件,面对几十上百个零件,你是不是也头疼过整理物料清单、编写设计说明?或者,当同事发来一份设计文档,你需要花半…...
AI训练师真实收入全景图:软件测试员的蓝海突围指南
一、薪资迷雾:从“月入六万神话”到基层现实2026年AI训练师岗位呈现极端薪资分化,需穿透表象看本质:头部光环案例:大厂高阶岗位(如AI伦理设计师、大模型优化专家)年薪可达60-100万元,但通常要求…...
eSearch终极指南:5分钟掌握OCR屏幕工具的强大功能
eSearch终极指南:5分钟掌握OCR屏幕工具的强大功能 【免费下载链接】eSearch 截屏 离线OCR 搜索翻译 以图搜图 贴图 录屏 滚动截屏 Screenshot OCR search translate search for picture paste the picture on the screen screen recorder 项目地址: https://gitco…...
