返回 导航

大数据

hangge.com

Redis - 查看redis服务实时统计、状态信息,监控操作命令教程(info、monitor命令)

作者:hangge | 2024-11-28 08:43
    RedisINFO 命令是一个非常实用的调试和监控工具,它可以为用户提供 Redis 服务器的实时统计和状态信息。这些信息包括服务器的配置参数、内存使用情况、客户端连接数、持久化状态、复制情况、Key 空间信息等。本将详细介绍 INFO 命令的使用。

1,命令使用说明

(1)INFO 命令可以直接获取 Redis 服务器的各种统计信息和状态数据。当我们执行 INFO 命令时,Redis 将返回按类别分组的状态信息,类别包括 serverclientsmemorypersistence 等等。
info
 
(2)INFO 命令后面可以指定需要查询的信息类别,而不是返回全部信息。比如下面命令只显示各数据库的键值统计信息:
info keyspace

(3)具体支持的主要类别如下:
信息类别 说明
server 服务器信息,如版本、启动时间、进程等
clients 客户端连接信息
memory 内存使用情况
persistence 持久化信息,如 RDBAOF 状态
stats 通用统计信息
replication 主从复制信息
cpu CPU 使用情况
commandstats 命令统计信息
cluster 集群信息(仅适用于集群模式)
keyspace 各数据库的键值统计

2,常用类别的信息解析

(1)server:服务器信息
  • redis_versionRedis 服务器的版本。
  • uptime_in_secondsuptime_in_daysRedis 服务器的运行时间(以秒和天为单位)。

(2)clients:客户端连接信息
  • connected_clients:当前连接到 Redis 服务器的客户端数量。
  • blocked_clients:正在等待阻塞命令(如 BLPOP)的客户端数量。

(3)memory:内存使用情况
  • used_memoryRedis 使用的总内存(以字节为单位)。
  • used_memory_human:以人类可读的格式显示内存使用。
  • maxmemory:配置的最大内存限制。

(4)persistence:持久化信息
  • loading:是否正在从磁盘加载数据。
  • rdb_last_save_time:最后一次 RDB 快照的保存时间(UNIX 时间戳)。
  • aof_enabled:是否启用了 AOF 持久化。

(5)stats:通用统计信息
  • total_connections_received:自启动以来接收的总连接数。
  • total_commands_processed:自启动以来执行的总命令数。
  • instantaneous_ops_per_sec:每秒执行的命令数(实时统计)。

(6)replication:复制信息
  • role:当前实例的角色(主节点 master 或从节点 slave)。
  • connected_slaves:已连接的从节点数量。

(7)keyspace:键空间信息
  • db0:数据库 0 的信息。
    • keys:该数据库中的键总数。
    • expires:设置了过期时间的键数量。
    • avg_ttl:所有带有过期时间的键的平均 TTL(毫秒)。

(8)commandstats:命令统计信息
  • calls:该命令的总调用次数。
  • usec:该命令执行所用的总时间(以微秒为单位)。
  • usec_per_call:每次调用的平均执行时间(以微秒为单位)。

附:使用 monitor 监控所有的执行命令

(1)monitor 命令可以实时监控我们对 redis 的所有操作。
注意:如果在线上的服务器上打开了这个功能,这里面就会频繁打印出来我们对 redis 数据库的所有操作,这样会影响 redis 的性能,所以说要慎用。

(2)该命令在某些特殊的场景下面是很有用的,下面是一个网友分享的使用经验:
  • 之前在工作中我遇到过一个很奇怪的问题,redis 中的一个 key 总是会莫名其妙的消失。
  • 我的一个程序会定时向 redis 中写入一个 key,但是我发现这个 key 刚写进去,然后一会就没了,很奇怪,当时我仔细排查了我的代码,里面既没有设置失效时间,也没有使用删除功能。
  • 所以这个 key 不是我的代码删的,肯定是有其它的代码会删除这个 key,但是到底是哪的代码?
  • 这个时候就不好排查了,我们的业务机有几十台,根本无从下手。
  • 这个时候我突然想到了 monitor 这个命令,虽然开启 monitor 会影响 redis 的性能,但是这个时候需要排查问题,使用一会也是可以接受的。
  • 所以就打开了 monitor,打开之后屏幕上就打印出来很多命令,这样根本就看不清,没办法追踪,数据太多了。
  • 所以又想到了这个办法,结合 grep 命令来操作,这样就可以过滤出来对指定 key 的所有操作了。
  • 通过这条数据我们可以分析出来到底是哪台机器上的程序删除了这个 key。然后再排查这台机器上都有哪些程序,对应的去排查代码,这样就快多了,最终发现是有一个代码里面会定时删除这个 key
评论

全部评论(0)

回到顶部