在 Redis 中查看所有 key 的内存占用有几种方法,以下是常用的几种方案:
MEMORY USAGE
命令(Redis 4.0+)# 获取单个 key 的内存使用情况
MEMORY USAGE key_name
# 结合 SCAN 命令获取所有 key 的内存使用
redis-cli --scan | while read key; do
echo "$key $(redis-cli MEMORY USAGE $key)"
done
redis-rdb-tools
分析工具# 首先安装 redis-rdb-tools
pip install rdbtools
# 生成内存报告(需要先获取 RDB 文件)
rdb -c memory dump.rdb > memory.csv
这会生成一个 CSV 文件,包含所有 key 及其内存使用情况。
DEBUG OBJECT
命令(不推荐生产环境使用)# 获取 key 的序列化长度
DEBUG OBJECT key_name
注意:DEBUG OBJECT
命令在生产环境应谨慎使用,因为它会阻塞 Redis 服务器。
MEMORY STATS
命令查看整体内存情况MEMORY STATS
这会返回 Redis 内存使用的详细统计信息,但不针对单个 key。
local keys = redis.call('KEYS', '*')
local result = {}
for i, key in ipairs(keys) do
table.insert(result, key)
table.insert(result, redis.call('MEMORY', 'USAGE', key))
end
return result
KEYS *
命令,因为它会阻塞 Redis 服务器需要更详细的内存分析时,建议使用专门的工具如 redis-rdb-tools
或 RedisInsight。