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

命令行里怎么快速看Redis状态和所有实例运行情况,实用技巧分享

关于在命令行里快速查看Redis状态和所有实例运行情况,有一些非常实用的技巧,这些技巧主要来源于Redis官方文档的说明、以及许多运维工程师和开发者在实际工作中总结出来的经验,下面就直接分享这些方法,避免复杂的理论,直接说怎么用。

最核心的命令:INFO

这个命令是查看Redis状态最强大、最全面的工具,直接在命令行输入 INFO,它会输出一大堆信息,但通常我们不会看全部,而是看其中关键的部分。

  1. 查看核心状态:INFO server 和 INFO stats

    • 输入 INFO server,你可以快速看到Redis的版本号、运行天数、进程ID、运行端口等基础信息,特别是 uptime_in_days 这个字段,能让你一眼就知道这个Redis实例已经稳定运行了多少天,这对于判断服务稳定性很有帮助。
    • 输入 INFO stats,这里包含了大量的运行时统计信息。total_connections_received 是历史总连接数,instantaneous_ops_per_sec 是当前每秒操作数,这个值能直观反映当前Redis的繁忙程度,还有 keyspace_hitskeyspace_misses,用它们可以计算出缓存的命中率,这是判断缓存是否有效的重要指标。
  2. 查看内存和持久化:INFO memory 和 INFO persistence

    • 内存是Redis的重点,输入 INFO memory,重点关注 used_memory,这是Redis实际使用的内存总量,如果它快接近服务器的物理内存了,那就非常危险了。used_memory_peak 是历史内存使用峰值,可以帮助你了解最高负载时的内存情况。
    • 输入 INFO persistence,这里能看到Redis的数据持久化情况,查看 rdb_last_save_time 可以知道最后一次成功备份到磁盘的时间戳,结合当前时间,就能判断备份是否正常。aof_last_bgrewrite_status 如果是 ok,说明最近的AOF重写成功了。
  3. 查看主从复制:INFO replication 如果你的Redis配置了主从复制,这个命令就至关重要,在主节点上执行,可以看到它下面连接了多少个从节点(connected_slaves),在从节点上执行,可以看到它是否已经成功连接上主节点(role:slavemaster_link_status:up),以及复制延迟有多大(master_last_io_seconds_ago,这个值很小的话说明同步很及时)。

快速检查的“快捷命令”

除了INFO的模块化查询,还有一些更直接的命令用于快速检查。

命令行里怎么快速看Redis状态和所有实例运行情况,实用技巧分享

  1. PING命令 这是最简单的健康检查,直接输入 PING,如果Redis服务正常,它会回复 PONG,很多监控脚本就用这个命令来确认Redis进程是否还“活着”。

  2. 查看键的数量:DBSIZE 输入 DBSIZE,它会立刻返回当前数据库中key的总数,让你对数据量有个快速的概念。

  3. 实时监控:MONITOR 这是一个需要谨慎使用的命令,输入 MONITOR 后,Redis会进入一种监控模式,实时打印出所有客户端发来的每一个命令,这在调试问题、查看当前到底在执行什么操作时非常有用。警告:在生产环境不要长时间使用,因为它会严重拖慢Redis的性能。

如何查看服务器上所有Redis实例的运行情况

很多时候,一台服务器上可能运行着多个Redis实例(每个实例监听不同的端口),这时候,逐个连接进去看就太麻烦了。

命令行里怎么快速看Redis状态和所有实例运行情况,实用技巧分享

  1. 使用ps命令结合grep 最直接的方法是在Linux命令行下(不是在Redis命令行里)执行:

    ps aux | grep redis-server

    这个命令会列出所有名字中包含“redis-server”的进程,你会看到每个Redis进程的启动命令,里面就包含了配置文件路径和端口号,这样你就知道这台机器上跑了哪些实例。

  2. 利用配置文件中的端口信息 每个Redis实例都有一个配置文件(.conf文件),你可以写一个简单的Shell脚本来批量检查,脚本的思路是:

    • 找到所有的Redis配置文件。
    • 从每个配置文件中读出它监听的端口号。
    • 然后用 redis-cli -p 端口号 info 这样的命令去逐个查询关键信息。 一个非常简单的循环可以是这样(假设配置文件都在 /etc/redis/ 下):
      for config_file in /etc/redis/*.conf; do
      port=$(grep ^port "$config_file" | awk '{print $2}')
      echo "检查实例端口: $port"
      redis-cli -p "$port" info stats | grep instantaneous_ops_per_sec
      done

      这个例子会输出每个Redis实例当前的每秒操作数。

  3. 使用专业的监控工具 对于实例非常多、要求又很高的生产环境,上面手动的方法就不够了,这时候可以考虑使用像 redis-cli --cluster check 命令(针对Redis集群),或者更通用的系统监控工具,比如Prometheus配合Redis Exporter,这些工具可以自动发现所有实例,并提供一个统一的仪表盘来查看所有实例的状态、性能指标和告警,但这部分就涉及到一些工具搭建了,属于更进阶的内容。

总结一下关键点: 日常快速检查,就用 INFO 命令加子模块(如 info memory, info replication),想知道机器上有哪些实例,用 ps aux | grep redis-server,要批量检查多个实例,写个简单的Shell脚本循环调用 redis-cli 是最实用的。MONITOR 命令虽好,但不要在生产环境乱用。