帮别人排查一个问题,项目还没上线但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操作命令。
专注于 服务器运维与web架构
E-mail:venus#rootop.org