主要观点总结
本文主要介绍了Redis内存碎片的问题,包括什么是内存碎片、内存碎片的原因、如何判断内存碎片以及清理内存碎片的方法。
关键观点总结
关键观点1: 什么是内存碎片
以火车卖票为例解释了内存碎片的概念,即应用程序需要的连续内存空间无法在满足需求的空闲内存中找到,造成部分内存空间闲置。
关键观点2: 内存碎片的原因
内存碎片大致分为两个原因:1. 内存分配策略局限性,导致实际分配的内存空间大于实际申请的;2. 键值对的修改、删除导致内存的扩容或释放,产生不连续的空闲内存块。
关键观点3: 如何判断内存碎片
通过Redis的INFO命令查询内存的使用情况,重点关注mem_fragmentation_ratio的值来判断内存碎片情况。
关键观点4: 清理内存碎片的方法
介绍Redis清理内存碎片的方式,包括自动清理的触发条件和控制CPU时间的参数,以确保在清理过程中不影响正常处理请求。
文章预览
前言 上周刚来了个应届小师弟,组长说让我带着,周二问了我这样一个问题:师兄啊,我用 top 命令看了下服务器的内存占用情况,发现 Redis 内存占用严重,于是我就删除了大部分不用的 keys ,为什么内存占用还是很严重,并没有释放呢? 嗯?为什么呢?今天就带着这个问题来介绍一下如何正确释放 Redis 的内存。 什么是内存碎片? 内存碎片这个概念应该不是第一听说了,熟悉JVM或者操作系统的应该都熟悉,以火车卖票为例,一个车厢 128 个车位,由于高峰期,只剩余 两个 位置了,但是此时 三个 人想要坐在一起,能够吹吹牛批,喝喝酒的,那么这三个人肯定不会买这节车厢的两个位置了,此时这两个位置可以称之为座位碎片 。 操作系统中对于内存分配也是一样的,比如应用需要申请一块连续N个字节的空间,虽然剩余内存总量大于 N 个字节,
………………………………