【吊打面试官系列】Redis篇 -Redis 回收进程如何工作的?

大家好,我是锋哥。今天分享关于 【Redis 回收进程如何工作的?】面试题,希望对大家有帮助;

​Redis 回收进程如何工作的?

一个客户端运行了新的命令,添加了新的数据。Redi 检查内存使用情况,如 果大于 maxmemory 的限制, 则根据设定好的策略进行回收。一个新的命令被执行,等等。所以我们不断地穿越内存限制的边界,通过不断达到边界然后不断地回收回到边界以下。如果一个命令的结果导致大量内存被使用(例如很大的集合的交集保存到一个新的键),不用多久内存限制就会被这个内存使用量超越。
1000道 互联网大厂Java工程师 精选面试题-Java资源分享网

Redis的内存回收进程是一个单独的线程或进程,被称为“内存回收进程”(memory reclaiming thread/process)。这个进程的主要工作包括:

  1. 过期键的检测:Redis首先在时间上进行判断,对那些已过期但是尚未被删除的 keys 进行标记,这样它们就可以在之后被立即释放并回收所占用的内存。

  2. LRU算法的运用:Redis内存回收进程还检查那些没有被过期,但仍然占用大量内存的键。如果所选键比快满了,Redis 就选择其中最早要删除的几个键,并释放它们所占用的空间。

  3. 手动回收内存:除了定期回收外,Redis 还支持手动释放 key VALUE 占用内存的方法,例如通过向 Redis 发送一个 flushall 命令或使用“shutdown”命令断开连接的方式来清除所有数据。

  4. 内存分配策略:Redis使用内存池(memory pool)来分配空间,并且它针对不同对象的大小,提供了不同的内存分配策略。

  5. 避免内存溢出:如果内存占满,Redis服务器将停止工作,同时遇到读写请求将返回错误信息OOM(Out of Memory)。为了预防这种情况,Redis 为内存回收提供了三个命令:基于过期时间取消 key、基于 LRU (Least Recently Used)算法淘汰长时间未使用的键/值对、数据库压缩。

总结来说,Redis 的内存管理主要依靠两个进程:内存回收进程和AOF持久化进程(如果打开)。所有键值都保存在内存中,如果内存满了,Redis将停止工作,同时遇到读写请求将返回错误信息OOM(OutOfMemory)。

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

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

相关文章

浅析AI大模型当前存在的技术瓶颈和限制及解决方案

方向五:未来发展趋势与挑战 提示:展望AI大模型学习的未来发展趋势,并讨论当前面临的主要挑战。可以关注新技术、新方法的出现,以及它们对AI大模型学习的影响;同时,也可以分析当前存在的技术瓶颈和限制&…

P2802 回家

P2802 回家 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 虽然是普及-难度的题,但是感觉细节有很多。 细节: bfs第一次到 ( i , j ) (i, j) (i,j),但是距离不一定是最小的 鼠标是一次性物品 血量到达 ( x x , y y ) (xx, yy) (xx,yy)为…

【文献分享】 机器学习 + 分子动力学 + 第一性原理计算 + 热力学性质(熔化温度 热导率 热膨胀系数)

分享一篇关于机器学习 分子动力学 第一性原理 熔化温度(熔化温度 & 热导率 & 热膨胀系数)的文章。 感谢论文的原作者! 关键词: 1. Al−Li alloy 2. Neural network potential 3. Molecular dynamics 4. Thermal pr…

SBA架构5G核心网

SBA(Service Based Architecture)架构是一种面向服务的架构,旨在提供更灵活、更可扩展、更容易部署和管理的解决方案。在电信领域,SBA架构被广泛应用于5G核心网和下一代网络的设计中。 在卫星互联网核心网的总体技术要求中&#…

wireshark 使用

wireshark介绍 wireshak可以抓取经过主机网卡的所有数据包(包括虚拟机使用的虚拟网卡的数据包)。 环境安装 安装wireshark: https://blog.csdn.net/Eoning/article/details/132141665 安装网络助手工具:https://soft.3dmgame.com/down/213…

源支付V7开源版2.99,修复各种提示错误

源支付V7开源版2.99,修复各种提示错误 加密说明:200拿来的,只有8.1这个文件加密,其他文件无任何加密,已修复各种提示错误 测试其他开源版安装提示错误,有几个文件是加密的 注:开发不易&#…

AJAX(二):axios 和 fetch函数发送AJAX请求、同源策略、 jsonp、CORS

一、各种发送AJAX请求 jquery基于回调函数,axios基于promise 1.axios发送AJAX请求!!! axios (v1.5.0) - Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 Node.js 中。 | BootCDN - Bootstrap 中文网开源项目免费 CDN 加速服务 服务器: app.…

小程序页面传参?

小程序页面之间传递参数通常可以通过以下几种方式实现: 通过 URL 参数传递:可以在跳转目标页面时,在 URL 中添加参数,目标页面可以通过 options 参数获取传递过来的数据。 // 页面 A wx.navigateTo({url: targetPage?param1value…

Redis类型 Stream Bitfield

Stream 类型 Stream类型就是Redis里的mq,是redis为了占领市场份额的产物 今天我们就来介绍一下Stream Redis的消息队列一般是两个方案 第一个是Lpush Rpop 队列的异步队列方案(一对一) 第二个方案就是pubsub(发布订阅)模式 (一对多) 注:这里如果没有消费者了,队列中的数据就直…

leetcode268-Missing Number

这道题目要求缺失的数字,一般解决数组的问题,要么往排序数组,要么往双指针遍历这些方向上靠,要么往异或方向上靠,总之落点无非就只有这几个。我们要求缺失的数字,可以依次让1~n和数组元素进行异…

代码随想录第25天 | 组合总和||| 、 电话号码的字母组合

一、前言 参考文献:代码随想录 今天的还是回溯算法,主要用到了昨天的回溯组合方法和巧妙思路方法,让我们继续为算法打基础吧! 二、组合总和||| 1、思路: 这一题和昨日的组合没啥太大区别只是遍历的范围变为了固定…

2024年华为OD机试真题-特殊的加密算法-Python-OD统一考试(C卷)

题目描述: 有一种特殊的加密算法,明文为一段数字串,经过密码本查找转换,生成另一段密文数字串。规则如下 1.明文为一段数字串由0-9组成 2.密码本为数字0-9组成的二维数组 3.需要按明文串的数字顺序在密码本里找到同样的数字串,密码本里的数字串是由相邻的单元格数字组成,…

未来智慧停车:技术架构解析与创新应用

随着城市化进程的不断加速,停车难题已成为城市居民生活中的一大痛点。传统的停车方式已经无法满足日益增长的停车需求,而智慧停车系统则成为了解决这一难题的重要途径。本文将深入探讨智慧停车系统的技术架构,并探索其在城市管理和用户体验上…

「Linux系列」PHP 运算符详解

文章目录 一、PHP 运算符简介1. 算术运算符2. 赋值运算符3. 比较运算符4. 逻辑运算符5. 位运算符6. 字符串运算符7. 错误控制运算符8. 类型运算符9. 执行运算符10. 递增/递减运算符11. 数组运算符12. 引用运算符 二、PHP 算术运算符1. 加法运算符 ()2. 减法运算符 (-)3. 乘法运…

echarts双柱状堆叠图

效果 代码 option {tooltip: {trigger: axis,axisPointer: { // 坐标轴指示器&#xff0c;坐标轴触发有效type: shadow // 默认为直线&#xff0c;可选为&#xff1a;line | shadow},formatter: function (params) { var res<div><p>时间&am…

数据库聚簇索引和非聚簇索引的区别

聚簇索引&#xff08;Clustered Index&#xff09;和非聚簇索引&#xff08;Non-clustered Index&#xff09;是数据库中两种不同的索引类型&#xff0c;它们的主要区别在于数据的存储方式和索引的结构&#xff1a; 数据存储方式&#xff1a; 聚簇索引&#xff1a;索引的叶子节…

ssm框架笔记-maven

html是骨头 css使皮肤 js是你能做的动作 MAVEN 依赖管理&#xff1a;1.声明dependenciys标签 2.maven search3。 版本号提取 3.$引用 3.2依赖传递和冲突 依赖传递指的是当一个模块或库 A 依赖于另一个模块或库 B&#xff0c;而 B 又依赖于模块或库 C&#xff0c;那么 A 会间…

vue3+vite模版框架 tabs右键刷新时丢失路由参数

问题&#xff1a; 标题栏的tabs的右键&#xff1a;刷新时&#xff0c;没有保存上一个页面传递过来的参数 分析&#xff1a; TagView.vue刷新事件 function refreshSelectedTag(view: TagView) {console.log(|--执行刷新, view)tagsViewStore.delCachedView(view);const {full…

吴恩达2022机器学习专项课程(一) 4.1 梯度下降

问题预览 梯度下降算法的作用是&#xff1f;梯度下降的过程&#xff1f;梯度下降和最小化成本函数的联系&#xff1f;所有的成本函数都是一个形状吗&#xff1f;在非凸形状中&#xff0c;梯度下降的更新过程是&#xff1f;在非凸形状中&#xff0c;不同的初值对最小化成本函数…

用XMLHttpRequest发送和接收JSON数据

百度的AI回答了一个案例&#xff1a; var xhr new XMLHttpRequest(); var url "your_endpoint_url"; // 替换为你的API端点 var data JSON.stringify({key1: "value1",key2: "value2" });xhr.open("POST", url, true); xhr.setReq…