redis的内存陷阱

Redis内存配置与NUMA陷阱:如何避免内存充足却触发Swap的性能灾难 在分布式缓存与高性能存储领域,内存管理是核心基础。现代多路服务器普遍采用NUMA(非统一内存访问)架构,其原理是将物理内存划分为多个节点,CPU访问本地节点内存速度最快,访问远程节点则需通过互联总线,存在延迟与带宽损耗。这一设计旨在提升多核协同效率,但若应用内存分配策略不当,会引发严重的性能问题。其技术价值在于,理解NUMA机制可帮助开发与运维人员规避隐蔽的性能陷阱,优化内存密集型应用(如Redis、MySQL等)的部署效能。典型应用场景包括云平台Redis实例配置、数据库服务器调优及高并发后端服务部署。当 阅读详情

整天发些转来的帖子, 自己总结太少了. 把我前段时间redis的让我头疼的地方写一下,因为这个原因本来用redis的数据被迁到tokyoCabinet上。

 

redis是个对内存依赖性很强的NoSql数据库,在内存足够的情况下性能出色

 

如果只有一台机子去部署redis,一定要特别小心。

 

比如我有台24G的服务器,理所当然我会将大量内存分配给redis。

 

比如20G的内存, 问题来了, 当你对redis插入数据后,redis会异步将数据dump到硬盘中

 

想起来很完美,问题是它会fork一个进程,并占去同样大小的内存,你需要的内存瞬间便为 20G+20G =40G

 

这时内存超过了物理内存的限制,马上会启动虚拟内存,我的机子上是8G虚拟内存,重点是这个是linux的虚拟内存,并不是redis自己的虚拟内存。

 

linux的虚拟内存 page很大,IO剧增,dump速度会非常慢,整个服务器的性能降到冰点,服务请求都会堵塞。最严重到机子坏掉。

 

对于单台机子最好是降低redis虚拟内存设置,page可以根据配置修改,这个虚拟内存比linux的虚拟内存好很多,因为page小很多。

 

如果你的redis既有读又有写,那么最好不要让redis占去大半的内存。

 

可以设置它的虚拟内存到8G,这还要根据你的key值大小的衡量,因为key是必须在内存中的,这样一来就算启用了虚拟内存,redis占去的实际内存也会超出设想。

 

天哪, 就是说必须给redis留出他本身需要一倍以上的内存,平时在不插入数据的时候,内存空着不用,浪费。

 

此外官方文档中建议对key小,value很大的数据设置虚拟内存。

 

另外master/slave不是很成熟,目前只支持主从,Redis在master是非阻塞模式,也就是说在slave执行数据同步的时候,master是可以接受客户端的请求的,并不影响同步数据的一致性,然而在slave端是阻塞模式的,slave在同步master数据时,并不能够响应客户端的查询

Redis的master/slave模式下,master提供数据读写服务,而slave只提供读服务

 

 

Redis vs MySQL:内存占用的“300%差距“与安全陷阱 Redis与MySQL内存占用差异深度解析:Redis采用轻量级键值对结构,内存占用仅为MySQL的1/3。本文通过数据结构对比、实际案例(8GB服务器优化后Redis仅占2.8GB)和高级技巧(Redis+MySQL混合缓存方案),揭示300%内存差距原因。提供3个最佳实践:1)Redis缓存热点数据;2)合理配置InnoDB Buffer Pool;3)设置Redis内存策略。同时警示常见错误:未设置Redis内存限制或错误配置MySQL缓存池会导致内存爆炸。优化后查询响应从500ms降至50ms,内存 阅读详情

相关推荐

Windows下快速搭建MSYS2开发环境(含GCC与MinGW配置)

本文详细介绍了在Windows系统下快速搭建MSYS2开发环境的完整流程。通过使用pacman包管理器,可以便捷地安装GCC编译器与MinGW-w64工具链,并配置系统环境变量。文章还涵盖了从基础安装、系统更新到编译开源项目的实战指南,帮助开发者高效构建原生Windows程序,显著提升C/C++开发效率。

weixin_29213827的博客 538

linux系统安装redis

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排

1773

求助:有没有基于pscad的锂电池仿真模型

求助:有没有基于pscad的锂电池仿真模型 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变没有 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写...

qq_38922523的博客 1221

六、Redis内存

六、Redis内存 1、内存配置 (1)、内存设置 ①、如果不设置内存大小或者设置内存大小为0,在64位操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存。 ②、Redis一般推荐设置内存为最大物理内存的四分之三。 (2)、修改文件配置 修改maxmemory大小,单位字节 (3)、通过命令修改 #修改内存大小 config set maxmemo...

L_D_Y_K的博客 2041

立创EDA手动拼板实战:当自带功能不够用,如何用‘复制粘贴’搞定异形拼版与特殊布局

本文详细介绍了立创EDA手动拼板技术在异形拼版与特殊布局中的应用实战。通过CTRL+SHIFT+V等核心操作技巧,解决混合尺寸拼板、特殊间距需求等复杂场景,提升PCB设计效率与灵活性,特别适合需要高精度控制的射频电路和医疗设备项目。

weixin_31967485的博客 385

Anolis OS 23实战:5分钟搞定AI环境配置(含NVIDIA驱动一键安装)

本文详细介绍了如何在Anolis OS 23上快速配置AI开发环境,包括NVIDIA驱动的一键安装和TensorFlow、PyTorch等AI框架的部署。通过智能硬件适配引擎和优化后的二进制包,用户可在5分钟内完成传统需要数小时的配置工作,显著提升AI项目开发效率。

weixin_30335575的博客 534

Redis知识点

使用redisson也会出现一个问题,就是如果redis使用了集群的模式(中小规模项目一般是:1主4从+3哨兵),因为redis采用的是AP模式,只能保证高可用,高性能,无法保证高一致性,当设置一个锁的时候只会往一个节点去设置锁,设置完了就会立马告诉你成功,内部去进行同步,假设你把这个锁的key设置到 了主节点,这个时候主节点正好挂掉了,其他节点还没有同步这把锁,从节点变成新的主节点了,其他线程就可以从新的节点上获取锁。二、采用布隆过滤器,它的底层主要是先去初始化一个比较大数组,里面存放的二进制0或1。

2302_76795243的博客 4487

Yersinia:layer 2攻击框架!全参数详细教程!Kali Linux教程!

Yersinia是一个专为执行二层网络攻击设计的框架,利用多种网络协议的弱点进行渗透测试和网络分析。它支持针对生成树协议(STP)、思科发现协议(CDP)、动态中继协议(DTP)、动态主机配置协议(DHCP)、热备用路由器协议(HSRP)、802.1q、802.1x、交换机间链路协议(ISL)和VLAN中继协议(VTP)的攻击。这些攻击可能导致网络中的拒绝服务(DoS)或为更复杂的攻击创造条件。Yersinia对渗透测试人员和网络管理员非常有用,但使用时需谨慎,以免造成网络不稳定。

qq_24305079的博客 2281

Redis理解内存

redis 内存模型、相关设置、回收策略、对象存储结构以及其优化

qq_27502511的博客 411

solidworks vba二次开发配合问题

solidworks vba二次开发配合问题二次开发装配的步骤 二次开发装配的步骤 solidworks可以使用宏录制配合过程从而得到配合的vba代码,步骤如下: 1.选择两个配合的面(点、线等) 2. 建立配合 例如将两个圆柱面同心(图中高亮): 配合后 我们看一下宏录制的代码: Sub main() //激活solidworks接口 Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc //选择两个圆柱面,注意此处是根据坐标选择,不

Alejandro123的博客 3404

【DRAM存储器四十七】LPDDR5介绍--LPDDR5的低功耗技术之DVFS

讲述LPDDR5的DVFSC和DVFSQ的工作原理和要求

highman110的博客 897

redis内存

redis的所有的数据都存在内存中,所以如何合理高效的利用redis内存就变得非常的重要了。首先我们应该知道redis的内存主要消耗在什么地方,怎么管理内存,怎么做才能够让redis的内存优化。这样才能用更少的内存,存储更多的数据,降低成本。

张姐姐聊编程 954

Central Finance 全景解析:用 SAP S/4HANA 构建跨系统的财务中台与渐进式转型路径

Central Finance 是基于 SAP S/4HANA 的一种部署与应用场景:在不打断现有异构源系统运营的前提下,把多套 SAP 与非 SAP 系统中的财务与管理会计数据实时/准实时复制到一套中心化的 SAP S/4HANA 中,作为统一的记账与分析底座,逐步把选定的财务流程(如预算控制、付款、固定资产结账等)迁入中心系统。这让企业既能快速获得统一报表与统一核算结构,又为未来的整体迁移留出了弹性路径。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 387

Redis的虚拟内存陷阱

看了一篇Redis的内存陷阱(http://blog.youkuaiyun.com/Java2King/archive/2010/10/29/5974426.aspx),有同感。 今天遇到了虚拟内存的陷阱,在redis重启时,会将swap数据加载到内存中,这将会耗费很高的io,导致iowait达到30%甚至更高,服务器无法响应。关掉虚拟内存就ok了。...

baiseda 201

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

挑战Redis单实例内存最大极限,“遭遇”NUMA陷阱!

我们公司的基础架构部有个云Redis平台,其中Redis实例在申请的时候可以自由选择需要的内存的大小。然后就引发了我的一个思考,Redis单实例内存最大申请到多大比较合适?假设母机是64...

程序IT圈 452

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Redis 内存陷阱

redis是个对内存依赖性很强的NoSql数据库,在内存足够的情况下性能出色 如果只有一台机子去部署redis,一定要特别小心。 比如我有台24G的服务器,理所当然我会将大量内存分配给redis。 比如20G的内存, 问题来了, 当你对redis插入数据后,redis会异步将数据dump到硬盘...

chicha8453的博客 179

redis 内存陷阱

原文链接: redis是个对内存依赖性很强的NoSql数据库,在内存足够的情况下性能出色 如果只有一台机子去部署redis,一定要特别小心。 比如我有台24G的服务器,理所当然我会将大量内存分配给redis。 比如20G的内存, 问题来了, 当你对redis插入数据后,redis会异步将数据dump到硬盘中 想起来很完美,问题是它会fork一个进程,并占去同样

进击30K的专栏 2092

Redis 崩了,但不是内存爆了?深入排查 mem_fragmentation_ratio 的致命陷阱

摘要: 线上Redis服务出现频繁超时和连接重置问题,排查发现mem_fragmentation_ratio高达2.06,表明内存碎片严重。通过启用Redis的active-defrag机制并优化配置参数(如threshold-lower和cycle-min),碎片率降至1.42,性能恢复稳定。同时纠正了Spring Boot中Lettuce连接池的错误配置写法(需使用lettuce.pool而非redis.pool)。建议定期监控内存碎片率,合理配置主动整理策略,并避免频繁操作大Key。该案例揭示了内存碎

qyhua的专栏 1260
上一篇: Java中多态的实现机制
下一篇: JSON — Java与JSON数据互转
Java2King
博客等级 码龄18年 221粉丝 77原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值