专栏名称: Java知音
专注于Java,推送技术文章,热门开源项目等。致力打造一个有实用,有情怀的Java技术公众号!
今天看啥  ›  专栏  ›  Java知音

面试官:为什么删除缓存后,Redis内存占用依然很高?

Java知音  · 公众号  · 数据库  · 2024-12-26 10:05
    

主要观点总结

本文主要介绍了Redis内存碎片的问题,包括什么是内存碎片、内存碎片的原因、如何判断内存碎片以及清理内存碎片的方法。

关键观点总结

关键观点1: 什么是内存碎片

以火车卖票为例解释了内存碎片的概念,即应用程序需要的连续内存空间无法在满足需求的空闲内存中找到,造成部分内存空间闲置。

关键观点2: 内存碎片的原因

内存碎片大致分为两个原因:1. 内存分配策略局限性,导致实际分配的内存空间大于实际申请的;2. 键值对的修改、删除导致内存的扩容或释放,产生不连续的空闲内存块。

关键观点3: 如何判断内存碎片

通过Redis的INFO命令查询内存的使用情况,重点关注mem_fragmentation_ratio的值来判断内存碎片情况。

关键观点4: 清理内存碎片的方法

介绍Redis清理内存碎片的方式,包括自动清理的触发条件和控制CPU时间的参数,以确保在清理过程中不影响正常处理请求。


文章预览

前言 上周刚来了个应届小师弟,组长说让我带着,周二问了我这样一个问题:师兄啊,我用 top 命令看了下服务器的内存占用情况,发现 Redis 内存占用严重,于是我就删除了大部分不用的 keys ,为什么内存占用还是很严重,并没有释放呢? 嗯?为什么呢?今天就带着这个问题来介绍一下如何正确释放 Redis 的内存。 什么是内存碎片? 内存碎片这个概念应该不是第一听说了,熟悉JVM或者操作系统的应该都熟悉,以火车卖票为例,一个车厢 128 个车位,由于高峰期,只剩余 两个 位置了,但是此时 三个 人想要坐在一起,能够吹吹牛批,喝喝酒的,那么这三个人肯定不会买这节车厢的两个位置了,此时这两个位置可以称之为座位碎片 。 操作系统中对于内存分配也是一样的,比如应用需要申请一块连续N个字节的空间,虽然剩余内存总量大于 N 个字节, ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览