推荐答案
INFO 命令用于查看 Redis 服务器的各种信息和统计。它可以返回多个部分的信息,包括:
- Server: Redis 服务器的基本信息,如版本、运行时间、进程 ID 等。
- Clients: 客户端连接信息,如连接数、阻塞客户端数等。
- Memory: 内存使用情况,如已用内存、内存碎片率等。
- Persistence: 持久化相关信息,如 RDB 和 AOF 的状态。
- Stats: 一般统计信息,如命令处理数、网络流量等。
- Replication: 主从复制信息,如角色、复制偏移量等。
- CPU: CPU 使用情况。
- Commandstats: 各个命令的统计信息。
- Cluster: Redis 集群信息。
- Keyspace: 数据库键空间信息,如键的数量、过期键的数量等。
可以通过 INFO [section] 来获取特定部分的信息,例如 INFO memory 只返回内存相关的信息。
本题详细解读
INFO 命令是 Redis 中非常重要的一个命令,它可以帮助开发者或运维人员快速了解 Redis 服务器的运行状态和性能指标。以下是各个部分的详细说明:
Server
- redis_version: Redis 服务器的版本。
- redis_git_sha1: Git SHA1。
- redis_git_dirty: Git dirty flag。
- os: 运行 Redis 的操作系统。
- arch_bits: 架构(32 或 64 位)。
- multiplexing_api: 事件处理机制(如 epoll、kqueue 等)。
- process_id: Redis 服务器的进程 ID。
- run_id: Redis 服务器的运行 ID。
- tcp_port: TCP/IP 端口。
- uptime_in_seconds: 服务器运行时间(秒)。
- uptime_in_days: 服务器运行时间(天)。
- hz: 服务器频率。
- lru_clock: LRU 时钟。
- executable: 可执行文件路径。
- config_file: 配置文件路径。
Clients
- connected_clients: 已连接的客户端数量。
- client_longest_output_list: 当前客户端输出缓冲区中最长的列表。
- client_biggest_input_buf: 当前客户端输入缓冲区中最大的缓冲区。
- blocked_clients: 被阻塞的客户端数量。
Memory
- used_memory: Redis 分配的内存总量。
- used_memory_human: 以人类可读格式显示的内存总量。
- used_memory_rss: 从操作系统的角度,Redis 占用的内存总量。
- used_memory_peak: Redis 内存消耗的峰值。
- used_memory_peak_human: 以人类可读格式显示的内存峰值。
- used_memory_lua: Lua 引擎使用的内存。
- mem_fragmentation_ratio: 内存碎片比率。
- mem_allocator: 内存分配器。
Persistence
- loading: 是否正在加载持久化文件。
- rdb_changes_since_last_save: 自上次保存后,数据集的更改次数。
- rdb_bgsave_in_progress: 是否正在执行 RDB 保存操作。
- rdb_last_save_time: 上次成功保存 RDB 的时间戳。
- rdb_last_bgsave_status: 上次 RDB 保存操作的状态。
- rdb_last_bgsave_time_sec: 上次 RDB 保存操作的耗时(秒)。
- rdb_current_bgsave_time_sec: 当前 RDB 保存操作的耗时(秒)。
- aof_enabled: AOF 是否启用。
- aof_rewrite_in_progress: 是否正在执行 AOF 重写。
- aof_rewrite_scheduled: 是否计划执行 AOF 重写。
- aof_last_rewrite_time_sec: 上次 AOF 重写操作的耗时(秒)。
- aof_current_rewrite_time_sec: 当前 AOF 重写操作的耗时(秒)。
- aof_last_bgrewrite_status: 上次 AOF 重写操作的状态。
- aof_last_write_status: 上次 AOF 写入操作的状态。
Stats
- total_connections_received: 服务器启动以来接受的连接总数。
- total_commands_processed: 服务器启动以来处理的命令总数。
- instantaneous_ops_per_sec: 每秒处理的命令数。
- total_net_input_bytes: 服务器启动以来接收的网络流量总量。
- total_net_output_bytes: 服务器启动以来发送的网络流量总量。
- instantaneous_input_kbps: 每秒接收的网络流量(KB)。
- instantaneous_output_kbps: 每秒发送的网络流量(KB)。
- rejected_connections: 由于 maxclients 限制而被拒绝的连接数。
- sync_full: 主从同步时,全量同步的次数。
- sync_partial_ok: 主从同步时,部分同步成功的次数。
- sync_partial_err: 主从同步时,部分同步失败的次数。
- expired_keys: 服务器启动以来过期的键总数。
- evicted_keys: 由于内存限制而被驱逐的键总数。
- keyspace_hits: 键空间命中次数。
- keyspace_misses: 键空间未命中次数。
- pubsub_channels: 当前订阅的频道数量。
- pubsub_patterns: 当前订阅的模式数量。
- latest_fork_usec: 上次 fork 操作的耗时(微秒)。
Replication
- role: 当前实例的角色(master 或 slave)。
- connected_slaves: 已连接的从服务器数量。
- master_repl_offset: 主服务器的复制偏移量。
- repl_backlog_active: 复制积压缓冲区是否激活。
- repl_backlog_size: 复制积压缓冲区的大小。
- repl_backlog_first_byte_offset: 复制积压缓冲区的第一个字节的偏移量。
- repl_backlog_histlen: 复制积压缓冲区的历史长度。
CPU
- used_cpu_sys: Redis 服务器消耗的系统 CPU。
- used_cpu_user: Redis 服务器消耗的用户 CPU。
- used_cpu_sys_children: 后台进程消耗的系统 CPU。
- used_cpu_user_children: 后台进程消耗的用户 CPU。
Commandstats
- cmdstat_XXX: 每个命令的统计信息,包括调用次数、总耗时、平均耗时等。
Cluster
- cluster_enabled: 是否启用集群模式。
Keyspace
- dbX: 每个数据库的键空间信息,包括键的数量、过期键的数量等。