首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么删除数据后,Redis内存占用依然很高

前言 上周刚来了个应届小师弟,组长说让我带着,周二问了我这样一个问题:师兄啊,我用top命令看了下服务器的内存占用情况,发现Redis内存占用严重,于是我就删除了大部分不用的keys,为什么内存占用还是很严重...第二个原因其实理解起来很简单,键值对的修改或者删除肯定会造成空间的扩容或者释放; 一方面,如果修改后的键值对变大或者变小了,势必会将占用的空间扩大或者释放不用的空间,如下图: ?...另一方面,如果键值对删除了,则会释放掉占用的空间,形成空闲空间。 如何判断存在内存碎片?...这个对于运维人员来说很重要,一旦出现Redis运行缓慢或者阻塞了,一定需要先判断内存的占用情况,而不是说胡乱的重启Redis。...以上两个参数控制了清理过程中的CPU时间占比,保证了正常处理请求不受影响 总结 本文以师弟的一个疑问开头介绍了删除数据导致内存占用还是很高的原因是存在内存碎片,导致内存碎片大致分为两个原因,如下: 内存分配策略局限性

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

师兄,为什么删除数据后,Redis内存占用依然很高

前言 上周刚来了个应届小师弟,组长说让我带着,周二问了我这样一个问题:师兄啊,我用top命令看了下服务器的内存占用情况,发现Redis内存占用严重,于是我就删除了大部分不用的keys,为什么内存占用还是很严重...第二个原因其实理解起来很简单,键值对的修改或者删除肯定会造成空间的扩容或者释放; 一方面,如果修改后的键值对变大或者变小了,势必会将占用的空间扩大或者释放不用的空间,如下图: ?...另一方面,如果键值对删除了,则会释放掉占用的空间,形成空闲空间。 如何判断存在内存碎片?...这个对于运维人员来说很重要,一旦出现Redis运行缓慢或者阻塞了,一定需要先判断内存的占用情况,而不是说胡乱的重启Redis。...以上两个参数控制了清理过程中的CPU时间占比,保证了正常处理请求不受影响 总结 本文以师弟的一个疑问开头介绍了删除数据导致内存占用还是很高的原因是存在内存碎片,导致内存碎片大致分为两个原因,如下: 内存分配策略局限性

1.3K20

Redis删除数据后,为什么内存占用率还是很高

在使用 Redis 时,我们经常会遇到这样一个问题:明明做了数据删除,数据量已经不大了,为什么使用 top 命令查看时,还会发现 Redis 占用了很多内存呢?...具体来说,一方面,如果修改后的键值对变大或变小了,就需要占用额外的空间或者释放不用的空间。另一方面,删除的键值对就不再需要内存空间了,此时,就会把空间释放出来,形成空闲空间。 ?...幸运的是,从 4.0-RC3 版本以后,Redis 自身提供了一种内存碎片自动清理的方法: Redis 专门为自动内存碎片清理功机制设置的参数: 控制碎片清理的开始和结束时机 占用的 CPU 比例 从而减少碎片清理对...注意事项 为了尽可能减少碎片清理对 Redis 正常请求处理的影响,自动内存碎片清理功能在执行时,还会监控清理操作占用的 CPU 时间,而且还设置了两个参数,分别用于控制清理操作占用的 CPU 时间比例的上

1.8K21

Redis删除数据后,为什么内存占用率还是很高

而主进程消耗又主要包括自身内存、对象内存、缓冲区内存、内存碎片四个方面:自身进程占用内存Redis进程自身所占用的内存,这部分内存通常很小,一个空的Redis进程所消耗的内存几乎可以忽略不计数据对象内存对象占用的内存是...Redis中占用内存最大的,这里存储这我们的键值对,我们知道不同的数据类型占用的内存空间大小也不同,特别是那种大key占用内存的情况就更惊人了。...我们继续看看什么是内存碎片内存碎片前面我们已经了解了Redis占用内存的组成以及如何查看内存占用信息,接下来看什么是内存碎片和导致出现内存碎片的原因。...朋友,希望本文对你有帮助~欢迎点赞 、收藏 、关注 三连支持一下~知道的越多,不知道的也越多,我是小许,下期见~参考:Redis删除数据后,为什么内存占用率还是很高?...-腾讯云开发者社区-腾讯云Redis 的数据被删除,内存占用还这么大?

419101

windows查看端口占用 windows端口占用 查找端口占用程序 强制结束端口占用 查看某个端口被占用的解决方法 如何查看Windows下端口占用情况

windows下查询端口占用情况 ,强制结束端口占用程序 查询8080端口被那个程序占用 如何强制结束windows下端口占用情况?...2.查询指定的端口被占用的情况   上图中本地地址一列中的冒号:  后面的数字就是端口号 netstat -aon|findstr "端口号" ?...最后一列为PID 3.根据PID查询占用端口的程序有两种方式 第一种继续使用命令行 tasklist|findstr "PID" 第二种使用任务管理器 ctrl shift esc ?...4.结束该进程 仍旧两种方式 第一种  在任务管理器中选中该进程点击”结束进程“按钮, 第二种是在cmd的命令窗口中执行终止命令 taskkill /f /t /im 占用程序名 比如 taskkill

32.4K30

Windows端口占用CMD关闭端口(8080被占用

一、背景 作为一名开发,我们是不是经常遇到端口被占用了,比如80,8080等,但是我们却不知道是那个工程启动,对小白来说,估计会很苦恼,网上搜索也很麻烦处理,网上推荐也是如下步骤:查看端口占用情况...:可以使用命令行工具如netstat、lsof等来查看当前系统中所有正在占用的端口情况。...终止占用端口的进程:可以使用Task Manager(Windows系统)或者Activity Monitor(Mac系统)来查找占用该端口的进程,并结束该进程。...修改端口号:如果无法终止占用端口的进程,可以尝试将该端口号修改为其他未占用的端口号。重启计算机:如果以上方法都无法解决问题,可以尝试重启计算机,这样可以释放所有占用的端口。大家是不是觉得很麻烦呢?...打开CMD控制台:图片使用命令查看9901端口是被那个进程占用了:netstat -nao | findstr "9901"图片这时候其实我不知道这端口被那个程序占用,我们看到被4676这个进程监听了,

2.2K40
领券