Rootop 服务器运维与web架构

排查redis占用内存达90%以上

帮别人排查一个问题,项目还没上线但redis占用内存很高。思路如下:

1、登陆redis控制台,首先用 keys * 获取所有的key

> keys *
x:x:a
x:x:b
x:x:c

发现key也就十来个,用 TYPE x:x:a 发现a是一个list数据类型

用lrange命令查看list中指定索引的值
用法: lrange key start end #获取列表中从 start 到 end 的值。
start 从0开始计,start、end也可为负数,倒数第一元素的位置为-1,倒数第二为-2,以此类推
lrange key 0 -1 # 第一个元素到倒数第一个元素(全部元素)

> lrange 0 1

发现值为json格式的数据

# 统计list长度,用 LLEN 命令可以返回列表的长度

> LLEN x:x:a

统计出 x:x:a 这个key有十几万多个索引

写了个脚本统计了下所有的key长度约370万,这样推测是数据量太大导致占用内存非常高。
经询问项目里有个模块用redis,个人推测要么用来做消息队列但没被消费,要么是做缓存,但是旧数据没有清理导致堆积越来越大。

PS:主要介绍了几个redis操作命令。

原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/4671.html

作者:Venus

服务器运维与性能优化

评论已关闭。