插件窝 干货文章 Redis 如何查看数据库中所有 key 的内存占用

Redis 如何查看数据库中所有 key 的内存占用

使用 Redis 内存 Key 197    来源:    2025-03-29

Redis 查看所有 Key 的内存占用方法

在 Redis 中查看所有 key 的内存占用有几种方法,以下是常用的几种方案:

1. 使用 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

2. 使用 redis-rdb-tools 分析工具

# 首先安装 redis-rdb-tools
pip install rdbtools

# 生成内存报告(需要先获取 RDB 文件)
rdb -c memory dump.rdb > memory.csv

这会生成一个 CSV 文件,包含所有 key 及其内存使用情况。

3. 使用 DEBUG OBJECT 命令(不推荐生产环境使用)

# 获取 key 的序列化长度
DEBUG OBJECT key_name

注意:DEBUG OBJECT 命令在生产环境应谨慎使用,因为它会阻塞 Redis 服务器。

4. 使用 MEMORY STATS 命令查看整体内存情况

MEMORY STATS

这会返回 Redis 内存使用的详细统计信息,但不针对单个 key。

5. 使用 Lua 脚本批量获取

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

注意事项

  1. 在生产环境中,避免直接使用 KEYS * 命令,因为它会阻塞 Redis 服务器
  2. 对于大型数据库,建议使用 SCAN 命令替代 KEYS
  3. Redis 4.0 及以上版本提供了更完善的内存分析工具
  4. 分析 RDB 文件是最安全的方法,不会影响线上服务

需要更详细的内存分析时,建议使用专门的工具如 redis-rdb-tools 或 RedisInsight。