redis 内存机制探索篇

news2025/1/21 18:53:26
info memory 查看redis 内存使用情况

在这里插入图片描述
出现的问题,公司在导入大量redis key 的时候,想要看一下redis 内存使用情况 ,发现used_memory_peak_perc 和 used_memory_dataset_perc 马上达到100%,这个时候很慌张,是不是当前redis 内存打满了,然后查了网上的博客,查到used_memory_dataset_perc:
在Redis中,used_memory_dataset_perc是用来表示“数据占用的内存大小的百分比”。这个指标是“数据空间占用总内存的百分比”,计算方式为“100% * (used_memory_dataset / (used_memory - used_memory_startup))”。
意思是如果这个比例如果达到了100%就会导致内存写满,这个时候非常慌张,但是又有文章说
在这里插入图片描述
意思是这个值永远也不会打满,这个时候就存在了一个疑惑,为什么说used_memory_dataset_perc 满了意味着内存使用已满,但是为什么又说是永远打不满,这是否存在矛盾,然后基于这个问题又进行探索。
在这里插入图片描述

发现操作系统的内存大小是在376G ,查看了redis 的内存分配机制,如果说redis 没有配置maxmemory 那 redis 会在达到峰值的时候像操作系统申请内存,假设操作系统内存完全提供给redis, 那理念上redis 的内存实际上是操作系统内存数,那上述问题就解决了,意思是当前内存使用量和redis 已经申请的内存的达到一定值的时候,redis 会向操作系统申请内存来应对内存使用满的情况,直到redis 的内存量和操作系统的内存量达到一致。但是情况是操作系统的内存不可能完全提供给redis使用,同时如果redis 的内存完全由操作系统内存决定的话,会非常的不稳定。
通过

free -h 

在这里插入图片描述
发现当前操作系统只能提供给117G的内存空闲内存,那意味着如果redis 内存使用情况达到操作系统内存可用峰值的时候,redis 内存就会实际上满,那这个时候redis 就会出现以下问题:
1。如果Redis实例的内存资源有限,达到峰值可能意味着无法再继续处理新的数据或请求,可能导致系统性能下降甚至崩溃。
2。如果达到峰值的内存使用量是由于数据写入造成的,那么在数据量大的情况下,可能会引发写入失败或写入延迟等问题。

因此,当used_memory_peak_perc达到100%时,通常被认为是不良情况,需要采取措施来降低内存使用量或者增加Redis实例的内存资源。这可能涉及到优化数据结构、删除部分数据、增加Redis实例的内存大小等措施。

然后导致redis 淘汰机制进行淘汰key ,性能下降崩溃,写入延迟,严重影响服务。
当redis 部署和其他进程部署在同一个机器下的时候,这种方式就非常危险,那怎么解决这个问题呢?
通过设置maxmemory,给redis 一个固定的redis 最大内存上限。
maxmemory :设置 redis 可用内存的上限。
如果 Redis 没有设置 maxmemory 参数,在 64bit 系统下那么它将使用默认值,通常为 0 或无限制。在 32bit 系统下,maxmemory 隐式不能超过 3GB。

127.0.0.1:6379> CONFIG GET maxmemory
1) "maxmemory"
2) "0"
127.0.0.1:6379> CONFIG SET maxmemory 100MB
OK
127.0.0.1:6379> CONFIG GET maxmemory
1) "maxmemory"
2) "104857600"

另一种方法是修改配置文件 redis.conf:

maxmemory 100mb

如果可用内存达到上限会发生什么?
redis 将试着根据配置的缓存策略去移除部分数据

当数据删不掉时,客户端在写数据时,服务端会响应错误信息

但是不会影响客户端读取数据

当达到maxmemory 时请设置最合适的淘汰机制去淘汰key,以降低对服务的影响。

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

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

相关文章

FreeRTOS学习之路,以STM32F103C8T6为实验MCU(2-12:内存管理)

学习之路主要为FreeRTOS操作系统在STM32F103(STM32F103C8T6)上的运用,采用的是标准库编程的方式,使用的IDE为KEIL5。 注意!!!本学习之路可以通过购买STM32最小系统板以及部分配件的方式进行学习…

王道p18 04.从有序顺序表中删除其值在给定值s与1之间(要求s<1)的所有元素,若s或t不合理或顺序表为空,则显示出错信息并退出运行。(c语言代码实现)

视频讲解在这里哦(感谢支持!)👇 p18 第四题王道数据结构课后算法题(c语言代码实现)_哔哩哔哩_bilibili 本题代码如下 void deletest(struct sqlist* L, int s, int t) {int i 0;int j 0;if (s > t …

使用 graph_tool 绘制网络关系图

目标 使用python的graph_tool包,根据以下表格,生成网络关系图。 采样方法大类小类低空遥感解译地面裸土地,人工地面地面影像解译水生植物水葫芦,荷叶,苦草,黑藻,水华,水白菜RTK测量禾本植物狗牙根,华克拉莎,斑茅,苔草,芦苇,芦竹,杂茅RTK测量竹风箱树,马…

LESS的叶绿素荧光模拟实现——任意波段荧光模拟

目录 前言一、任意波段荧光模拟的实现二、需要注意的输入参数 前言 此专栏默认您对LESS (LargE-Scale remote sensing data and image Simulation framework) 模型和叶绿素荧光(Sun-Induced chlorophyll Fluorescence, SIF)有一定的了解。当然,您也可以在这里下载中…

NX二次开发UF_CURVE_create_joined_feature 函数介绍

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_create_joined_feature Defined in: uf_curve.h int UF_CURVE_create_joined_feature(UF_STRING_p_t uf_curve_string, int creation_method, tag_t * joined_curve_featur…

kafka C++实现生产者

文章目录 1 Kafka 生产者的逻辑2 Kafka 的C API2.1 RdKafka::Conf2.2 RdKafka::Message2.3 RdKafka::DeliveryReportCb2.4 RdKafka::Event2.5 RdKafka::EventCb2.6 RdKafka::PartitionerCb2.7 RdKafka::Topic2.8 RdKafka::Producer(核心) 3 Kafka 生产者…

报错解决:You may need an additional loader to handle the result of these loaders.

报错信息如下 vue 项目 Module parse failed: Unexpected token (1:9) File was processed with these loaders:* ./node_modules/vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js* ./node_modules/babel-loader/lib/index.js* ./node_modules/eslint-loader/in…

OpenCV | 图像梯度sobel算子、scharr算子、lapkacian算子

import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline 1、sobel算子 img cv2.imread(pie.png,cv2.IMREAD_GRAYSCALE) cv2.imshow(img,img) cv2.waitKey() cv2.destroyAllWindows() pie图片 dst cv2.S…

4G5G防爆执法记录仪、防爆智能安全帽赋能智慧燃气,可视化巡检巡线,安全生产管控

随着燃气使用的普及,燃气安全问题日益突出。传统应急安全问题处理方式暴露出以下问题: 应急预案不完善:目前一些燃气企业的应急预案存在实用性不高、流程不清晰等问题,导致在紧急情况下难以迅速启动和有效执行。 部门协同不流畅…

Python将Labelme的Json标注文件进行增、删、改、查

Python将Labelme的Json标注文件进行增、删、改、查 前言前提条件相关介绍实验环境Json标注文件的增、删、改、查增代码实现输出结果 删代码实现输出结果 改代码实现输出结果 查代码实现输出结果 前言 由于本人水平有限,难免出现错漏,敬请批评改正。更多精…

人机交互3——多主题多轮对话

1.主动切换 2.被动切换 3.多轮状态记忆

第二十章总结。。。

20.1线程简介. 20.2创建线程 2.1继承Thread类 Thread 类是java.lang包中的一个类,从这个类中实例化的对象代表线程,程序员启动一个新线程需要建立Thread 实例。Thread类中常用的两个构造方法如下: public Thread():创建一个新的线程对象。 public Thread…

Sui主网升级至V1.14.2版本

Sui主网现已升级至V1.14.2版本,同时Sui协议升级至31版本。其他升级要点如下所示: #14875: [修复] 为所有权限设置共识度量值。 #14811: [Narwhal] 改进每个权限的共识信息度量的可用性。 完整变更日志:Release mainnet-v1.14.2 MystenL…

离散化笔记

文章目录 离散化的适用条件离散化的意思AcWing 802. 区间和CODECODE2 离散化的适用条件 离散化用于区间求和问题对于数域极大,而数的量很少的情况下 离散化的意思 背景:对于一个极大数域上的零星几个数进行操作后,求某段区间内的和 其实意思…

单片非晶磁性测量系统非晶特性

1. 非晶特性(与硅钢相比) 非晶带材的厚度很薄,一般为0.025 mm,只有取向硅钢带材的1/10左右。比总损耗很低,P1.5 / 50的典型值约为0.2 W/kg,该值是取向硅钢P1.7 / 50典型值的1/5左右。具有高磁致伸缩和低的…

(二)基于高尔夫优化算法GOA求解无人机三维路径规划研究(MATLAB)

一、无人机模型简介: 单个无人机三维路径规划问题及其建模_IT猿手的博客-CSDN博客 参考文献: [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120 二、高尔夫优化算法GOA简介 高尔夫优化算法…

第二十章 多线程总结

继承Thread 类 Thread 类时 java.lang 包中的一个类,从类中实例化的对象代表线程,程序员启动一个新线程需要建立 Thread 实例。 Thread 对象需要一个任务来执行,任务是指线程在启动时执行的工作,start() 方法启动线程&…

PTA_2023年软件设计综合实践_10(回溯法与分治限界法)

7-1 桥本分数 将1-9九个数不重复地赋给不同的9个元素 ,实现形如a/bcd/eff/hi 的形式。例:1/265/784/39 1/325/967/84 (注意:1/265/784/39 和5/781/264/39 只能算一种解),共有多少种不同的解。 语言选C #…

YOLOv5算法进阶改进(6)— 更换主干网络之ResNet18

前言:Hello大家好,我是小哥谈。ResNet18是ResNet系列中最简单的一个模型,由18个卷积层和全连接层组成,其中包含了多个残差块。该模型在ImageNet数据集上取得了很好的表现,成为了深度学习领域的经典模型之一。ResNet18的优点是可以解决深度神经网络中梯度消失的问题,使得性…