当前位置:首页 > 内存 > 正文

查看redis占用的内存

  • 内存
  • 2024-06-09 13:43:27
  • 6177

一、如何查询redis的缓存文件路径

1.首先在沙箱目录中找到Redis安装目录如下图,输入/opt/install/redis-2.8.19/src如下。

2需要注意的是,它通常位于Redis安装目录下,有时也位于bin目录下,如下。

3.进入该目录后,运行Linux命令启动Redis。命令:./redis-cli-h127.0.0.1-p6379。

4.查看当前key值:依次获取这两个值:getkeyvalue。

5.使用ttl请求到期日期。如,通过ttl方法添加键值,可以快速查询过期日期。


二、Redis内存故障诊断及常用运维命令您是否遇到过这样的问题:我的数据量很低,但仍然出现MOO错误?
首先说明一下Redis的OOM有两种
简单介绍一下Redis内存消耗划分,为后续的诊断提供思路。上图可以概括Redis的内存消耗分为以下几个部分:
使用Redis-benchmark不断注入数据
创建缓冲压力输入(避免干扰,清除先数据,然后按下)测试)
经过几秒的压力测试,MOO被触发
检查输入缓冲区的内存消耗可以看到。客户端的总输入缓冲区消耗约为2.4GB,远远超出了maxmemory参数设置。
您可以运行上面的check命令来定位每个客户端输入缓冲区的内存消耗情况(从大到小排序)。
一般情况下,如果出现连接异常,可以使用下面的命令来排除
为了方便测试,我直接将复制积压缓冲区设置为800MB
开始。redis-benchmark压力测试流程
检查复制积压缓冲区的内存消耗情况。可以看到,由于缓冲区设置太大,数据量只有190M,Redis无法写入。
如果客户端输出缓冲区太大,如何排查?一般这种场景比较少见,在使用Redis的Monitor命令时很常见
先启用Monitor命令
在上面的排查过程中,我认为一个Redis运维命令比较方便,总结如下
脚本执行效果:


三、Redis的内存被占满后,如何进行清理?Redis是基于科学的数据库,其使用受到内存的限制。当Redis内存满时,需要清理内存空间。清除Redis内存有以下几种方法:
1.例如,您可以使用“DEL”命令删除特定键,或使用“FLUSHDB”命令清除当前数据库中的所有键。
2.例如,使用“散列”、“列表”和“集合”而不是字符串的数据结构可以更好地利用内存空间。
3.例如,您可以使用“allkey-lru`策略根据最后使用的密钥来释放内存空间。
4.可以定期清理日志文件以释放内存空间。
5.使用缓存机制:如果Redis内存使用量较大,可以考虑使用某种机制来减轻数据库压力,例如可以使用Redis来减少数据库访问次数,可以通过删除不必要的数据、优化数据结构等方式进行清理。使用内存优化策略,定期清理日志并使用缓存机制。