当前位置:首页 > 问答 > 正文

Redis内存用多少怎么查啊,redis查看内存大小的方法有哪些呢

(主要信息整理自Redis官方文档、运维社区常见做法以及多位数据库管理员的经验分享)

想知道Redis用了多少内存,这事儿其实挺简单的,Redis自己就提供了好几种命令来帮你查看,就像给汽车看油表一样方便,下面我就把这些方法一个一个说给你听。

最直接的一招:用 INFO MEMORY 命令

这个命令是查看Redis内存情况最全面、最常用的方法,就像一份详细的身体检查报告。(来源:Redis官方文档)

Redis内存用多少怎么查啊,redis查看内存大小的方法有哪些呢

你打开Redis的命令行界面(比如用 redis-cli),然后输入 INFO MEMORY 回车,屏幕上就会刷出来一大堆信息,别慌,我们只看几个最关键的数字就行:

  • used_memory:这是最重要的数字!它表示Redis实际已经分配的内存总量,单位是字节,这个值包括了你自己存的数据、以及Redis内部为了管理这些数据产生的一些开销,你平常说的“Redis用了多少内存”,主要就是指它。
  • used_memory_human:这个是上面 used_memory 的“人性化”显示,Redis会很贴心地把字节转换成K、M、G这样的单位,24G,一眼就能看明白,不用自己掰着手指头数零。
  • used_memory_rss:这个值可以理解为Redis进程在操作系统眼里占用了多少物理内存,一般情况下,它会比 used_memory 大一些,因为操作系统分配内存有自己的一套机制,如果这个值比 used_memory 大很多,那可能说明内存碎片有点严重了。
  • mem_fragmentation_ratio:这就是上面说的“内存碎片率”,它是 used_memory_rss 除以 used_memory 算出来的,这个比值大于1是正常的,但如果持续很高(比如超过1.5甚至更高),就可能意味着内存浪费比较多,可能需要采取措施清理一下。

你通常只需要执行 INFO MEMORY,然后找到 used_memory_human 那一行,就能立刻知道当前内存用量了。

快速看个大概:用 redis-cli info 配合过滤

有时候你不想看那么多信息,只想快速瞄一眼内存大小。(来源:Redis命令行工具的常见用法)

Redis内存用多少怎么查啊,redis查看内存大小的方法有哪些呢

这时候可以这样做:在系统命令行(不是Redis命令行)里输入:

redis-cli info memory | grep used_memory_human

这条命令会连接Redis,并只显示出包含 used_memory_human 的那一行结果,非常干净利落。

查看整个实例的总内存和单个Key的内存

  • 查看实例总内存:上面说的 INFO MEMORY 已经能看了,另外一个命令是 CONFIG GET maxmemory,这个命令主要是查看你给Redis设置的最大内存上限是多少,防止它用爆了。(来源:Redis官方文档)
  • 查看某个特定Key占多大:如果你怀疑是某个大Key吃掉了太多内存,想把它揪出来,可以用 MEMORY USAGE 命令。(来源:Redis官方文档) 用法是 MEMORY USAGE your_key_name,比如你想看看名叫 user:1000:profile 的这个Key占了多大空间,就输入 MEMORY USAGE user:1000:profile,它会返回这个Key及其值所占用的字节数,不过要注意,这个命令为了计算大小,可能会有点耗时,如果Key特别大或者很多,要小心使用。

进阶玩法:使用 redis-rdb-tools 进行离线分析

Redis内存用多少怎么查啊,redis查看内存大小的方法有哪些呢

如果Redis实例已经用了很多内存,你想更深入地了解到底是哪些数据、哪种类型的数据在“占地方”,光靠上面的命令可能就不够了,这时候可以请出一个强大的第三方工具,叫 redis-rdb-tools。(来源:GitHub上该工具的说明文档和广泛社区应用)

这个工具的工作原理是:它不直接连接在运行的Redis,而是让你把Redis的持久化文件(就是那个RDB文件,相当于某个时间点的数据备份)拿出来,然后它像做CT扫描一样,对这个文件进行分析,它能生成一个非常详细的报告,告诉你:

  • 整个数据库的总大小。
  • 每种数据类型的(比如String、Hash、List、Set、ZSet)内存占比。
  • 每个Key(或者按照你给的前缀模式)占用了多少内存,并从大到小排序。
  • 甚至能分析出内存都花在了数据本身还是额外的开销上。

这种方法特别适合在业务低峰期做深度排查,找到内存使用的“大头”,从而有针对性地进行优化,比如清理无用数据、调整数据结构等。

  • 日常快速查看:就用 INFO MEMORY 命令,重点看 used_memory_human
  • 命令行脚本化查看:用 redis-cli info memory | grep used_memory_human
  • 检查单个Key大小:用 MEMORY USAGE key_name
  • 深度分析内存分布:使用 redis-rdb-tools 分析RDB文件。

知道了内存用了多少,很多时候我们还会关心内存是不是快用满了,你可以通过 INFO MEMORY 里的 maxmemory 配置和 used_memory 对比来看,如果快满了,就要考虑清理数据、扩容或者优化数据结构了,希望这些方法能帮到你!