# INFO
**INFO [section]**
以一种易于解释(parse)且易于阅读的格式,返回关于 Redis 服务器的各种信息和统计数值。
通过给定可选的参数 `section` ,可以让命令只返回某一部分的信息:
* `server` : 一般 Redis 服务器信息,包含以下域:
> * `redis_version` : Redis 服务器版本
> * `redis_git_sha1` : Git SHA1
> * `redis_git_dirty` : Git dirty flag
> * `os` : Redis 服务器的宿主操作系统
> * `arch_bits` : 架构(32 或 64 位)
> * `multiplexing_api` : Redis 所使用的事件处理机制
> * `gcc_version` : 编译 Redis 时所使用的 GCC 版本
> * `process_id` : 服务器进程的 PID
> * `run_id` : Redis 服务器的随机标识符(用于 Sentinel 和集群)
> * `tcp_port` : TCP/IP 监听端口
> * `uptime_in_seconds` : 自 Redis 服务器启动以来,经过的秒数
> * `uptime_in_days` : 自 Redis 服务器启动以来,经过的天数
> * `lru_clock` : 以分钟为单位进行自增的时钟,用于 LRU 管理
* `clients` : 已连接客户端信息,包含以下域:
> * `connected_clients` : 已连接客户端的数量(不包括通过从属服务器连接的客户端)
> * `client_longest_output_list` : 当前连接的客户端当中,最长的输出列表
> * `client_longest_input_buf` : 当前连接的客户端当中,最大输入缓存
> * `blocked_clients` : 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量
* `memory` : 内存信息,包含以下域:
> * `used_memory` : 由 Redis 分配器分配的内存总量,以字节(byte)为单位
> * `used_memory_human` : 以人类可读的格式返回 Redis 分配的内存总量
> * `used_memory_rss` : 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 `top` 、 `ps` 等命令的输出一致。
> * `used_memory_peak` : Redis 的内存消耗峰值(以字节为单位)
> * `used_memory_peak_human` : 以人类可读的格式返回 Redis 的内存消耗峰值
> * `used_memory_lua` : Lua 引擎所使用的内存大小(以字节为单位)
> * `mem_fragmentation_ratio` : `used_memory_rss` 和 `used_memory` 之间的比率
> * `mem_allocator` : 在编译时指定的, Redis 所使用的内存分配器。可以是 libc 、 jemalloc 或者 tcmalloc 。
>
> 在理想情况下, `used_memory_rss` 的值应该只比 `used_memory` 稍微高一点儿。当 `rss > used` ,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。内存碎片的比率可以通过 `mem_fragmentation_ratio` 的值看出。当 `used > rss` 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。
>
> Because Redis does not have control over how its allocations are mapped to memory pages, high `used_memory_rss` is often the result of a spike in memory usage.
>
> 当 Redis 释放内存时,分配器可能会,也可能不会,将内存返还给操作系统。如果 Redis 释放了内存,却没有将内存返还给操作系统,那么 `used_memory` 的值可能和操作系统显示的 Redis 内存占用并不一致。查看 `used_memory_peak` 的值可以验证这种情况是否发生。
* `persistence` : `RDB` 和 `AOF` 的相关信息
* `stats` : 一般统计信息
* `replication` : 主/从复制信息
* `cpu` : CPU 计算量统计信息
* `commandstats` : Redis 命令统计信息
* `cluster` : Redis 集群信息
* `keyspace` : 数据库相关的统计信息
除上面给出的这些值以外,参数还可以是下面这两个:
* `all` : 返回所有信息
* `default` : 返回默认选择的信息
当不带参数直接调用 [INFO](#info) 命令时,使用 `default` 作为默认参数。
Note
不同版本的 Redis 可能对返回的一些域进行了增加或删减。
因此,一个健壮的客户端程序在对 [_INFO_](#info) 命令的输出进行分析时,应该能够跳过不认识的域,并且妥善地处理丢失不见的域。
**可用版本:**
>= 1.0.0
**时间复杂度:**
O(1)
**返回值:**
具体请参见下面的测试代码。
```
redis> INFO
# Server
redis_version:2.5.9
redis_git_sha1:473f3090
redis_git_dirty:0
os:Linux 3.3.7-1-ARCH i686
arch_bits:32
multiplexing_api:epoll
gcc_version:4.7.0
process_id:8104
run_id:bc9e20c6f0aac67d0d396ab950940ae4d1479ad1
tcp_port:6379
uptime_in_seconds:7
uptime_in_days:0
lru_clock:1680564
# Clients
connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
# Memory
used_memory:439304
used_memory_human:429.01K
used_memory_rss:13897728
used_memory_peak:401776
used_memory_peak_human:392.36K
used_memory_lua:20480
mem_fragmentation_ratio:31.64
mem_allocator:jemalloc-3.0.0
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1338011402
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
# Stats
total_connections_received:1
total_commands_processed:0
instantaneous_ops_per_sec:0
rejected_connections:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0
# Replication
role:master
connected_slaves:0
# CPU
used_cpu_sys:0.03
used_cpu_user:0.01
used_cpu_sys_children:0.00
used_cpu_user_children:0.00
# Keyspace
```
- Redis 文档
- 键空间通知(keyspace notification)
- 事务(transaction)
- 发布与订阅(pub/sub)
- 复制(Replication)
- 通信协议(protocol)
- 持久化(persistence)
- Sentinel
- 集群教程
- Redis 集群规范
- Redis 命令参考
- Key(键)
- DEL
- DUMP
- EXISTS
- EXPIRE
- EXPIREAT
- KEYS
- MIGRATE
- MOVE
- OBJECT
- PERSIST
- PEXPIRE
- PEXPIREAT
- PTTL
- RANDOMKEY
- RENAME
- RENAMENX
- RESTORE
- SORT
- TYPE
- SCAN
- String(字符串)
- APPEND
- BITCOUNT
- BITOP
- DECR
- DECRBY
- GET
- GETBIT
- GETRANGE
- GETSET
- INCR
- INCRBY
- INCRBYFLOAT
- MGET
- MSET
- MSETNX
- PSETEX
- SET
- SETBIT
- SETEX
- SETNX
- SETRANGE
- STRLEN
- Hash(哈希表)
- HDEL
- HEXISTS
- HGET
- HGETALL
- HINCRBY
- HINCRBYFLOAT
- HKEYS
- HLEN
- HMGET
- HMSET
- HSET
- HSETNX
- HVALS
- HSCAN
- List(列表)
- BLPOP
- BRPOP
- BRPOPLPUSH
- LINDEX
- LINSERT
- LLEN
- LPOP
- LPUSH
- LRANGE
- LREM
- LSET
- LTRIM
- RPOP
- RPOPLPUSH
- RPUSH
- RPUSHX
- Set(集合)
- SADD
- SCARD
- SDIFF
- SDIFFSTORE
- SINTER
- SINTER
- SINTERSTORE
- SISMEMBER
- SMEMBERS
- SMOVE
- SPOP
- SRANDMEMBER
- SREM
- SUNION
- SUNIONSTORE
- SSCAN
- SortedSet(有序集合)
- ZADD
- ZCARD
- ZCOUNT
- ZINCRBY
- ZRANGE
- ZRANGEBYSCORE
- ZRANK
- ZREM
- ZREMRANGEBYRANK
- ZREMRANGEBYSCORE
- ZREVRANGE
- ZREVRANGEBYSCORE
- ZREVRANK
- ZSCORE
- ZUNIONSTORE
- ZINTERSTORE
- ZSCAN
- Pub/Sub(发布/订阅)
- PSUBSCRIBE
- PUBLISH
- PUBSUB
- PUNSUBSCRIBE
- SUBSCRIBE
- UNSUBSCRIBE
- Transaction(事务)
- DISCARD
- EXEC
- MULTI
- UNWATCH
- WATCH
- Script(脚本)
- EVAL
- EVALSHA
- SCRIPT EXISTS
- SCRIPT FLUSH
- SCRIPT KILL
- SCRIPT LOAD
- Connection(连接)
- AUTH
- ECHO
- PING
- QUIT
- SELECT
- Server(服务器)
- BGREWRITEAOF
- BGSAVE
- CLIENT GETNAME
- CLIENT KILL
- CLIENT LIST
- CLIENT SETNAME
- CONFIG GET
- CONFIG RESETSTAT
- CONFIG REWRITE
- CONFIG SET
- DBSIZE
- DEBUG OBJECT
- DEBUG SEGFAULT
- FLUSHALL
- FLUSHDB
- INFO
- LASTSAVE
- MONITOR
- PSYNC
- SAVE
- SHUTDOWN
- SLAVEOF
- SLOWLOG
- SYNC
- TIME
- 关于