Redis 是一个开源、高性能的Key-Value数据库,被广泛应用在服务器各种场景中。本文介绍几个查看Redis内存信息的命令,包括常用的info memoryinfo keyspacebigkeys等。

查看Redis内存使用

info 命令用于监控Redis运行情况,其中 info memory 可以查看Redis内存使用统计信息:

redis-cli info memory

命令输出结果如下图:

redis info memory输出
redis info memory输出

前几个字段信息最为重要,其含义分别为:

属性名属性说明
used_memoryRedis 分配器分配的内存总量,也就是内部存储的所有数据内存占用量
used_memory_human以可读的格式返回 used_memory
used_memory_rss从操作系统的角度显示 Redis 进程占用的物理内存总量
used_memory_rss_humanused_memory_rss 的用户宜读格式的显示
used_memory_peak内存使用的最大值,表示 used_memory 的峰值
used_memory_peak_human以可读的格式返回 used_memory_peak的值

查看Key统计信息

Keys命令性能很不好,线上使用该命令简直是业务克星,因此建议生产环境屏蔽Keys命令。如果只是想查看Key统计信息,可以使用另外两个命令:

1. dbsize:查看当前数据库的有效key数量

2. info keyspaceinfo命令给出Redis实例各个数据库的Key信息

两个命令输出如下:

redis查看key信息
redis查看key信息

可以看到,info keyspace命令给出更全的统计信息。

查看占用内存最大的Key

查看数据库中哪个Key占用内存最大,可以使用--bigkeys参数:

redis-cli -n 5 --bigkeys

命令输出如下:

Redis bigkeys输出
Redis bigkeys输出

运行结果按照从小到大的顺序给出了内存占用最高的10个Key。上图结果中,最大Key的值占用内存达到300多K。

对于string类型,bigkeys的输出是正确的,然而list、sets等数据结构,bigkeys的计算方式可能存在问题,实践中请注意着点。

此外--bigkeys参数还给出了Keys信息的统计。上述输出中,所有的数据都是string类型,没有list、sets等类型数据。

参考

  1.  一文了解 Redis 内存监控和内存消耗
  2.  redis批量删除key