*Redis SERVER 命令

SERVER 是 Redis 服务器信息命令组,用于获取 Redis 服务器的各种运行状态和配置信息。主要包括 INFO、CONFIG、CLIENT、TIME、LASTSAVE 等命令。


*语法

SERVER 命令组包含以下核心命令:

INFO [section]
CONFIG GET parameter
CONFIG SET parameter value
CONFIG REWRITE
CLIENT LIST [TYPE type] [ID id [id ...]]
CLIENT KILL [ip:port] [ID client-id] [TYPE type] [USER username] [ADDR addr] [SKIPME yes/no]
TIME
LASTSAVE
DBSIZE
MONITOR
SAVE
BGSAVE
SHUTDOWN [NOSAVE|SAVE] [NOW] [FORCE] [ABORT]
FLUSHDB [ASYNC|SYNC]
FLUSHALL [ASYNC|SYNC]

*参数说明

参数 类型 必填 说明
section String 否 INFO 的信息分类,如 server、clients、memory 等
parameter String 是 配置参数名
value String 是 配置参数值
type String 否 客户端类型过滤(normal、master、replica、pubsub)
id Integer 否 客户端 ID

*返回值

  • INFO:返回指定 section 的信息文本,无 section 则返回所有信息
  • CONFIG GET:返回参数名和值组成的数组
  • CONFIG SET:成功返回 OK
  • CLIENT LIST:返回客户端信息数组
  • TIME:返回两个元素数组 [Unix 时间戳(秒),微秒]
  • LASTSAVE:返回最后一次保存的 Unix 时间戳
  • DBSIZE:返回当前数据库的键数量
  • SHUTDOWN:无返回值,服务器关闭连接

*时间复杂度

  • INFO: O(1) - CONFIG GET/SET: O(1) - CLIENT LIST: O(N),N 为客户端数量
  • TIME: O(1) - DBSIZE: O(1) ---

*示例

*获取服务器信息

> INFO server
# Server
redis_version:7.2.0
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:...
redis_mode:standalone
os:Linux 5.4.0
arch_bits:64
gcc_version:9.3.0
process_id:1
run_id:...
tcp_port:6379
uptime_in_seconds:3600
uptime_in_days:0

*获取内存使用情况

> INFO memory
# Memory
used_memory:1048576
used_memory_human:1.00M
used_memory_rss:2097152
used_memory_peak:2097152
used_memory_peak_human:2.00M

*配置管理

> CONFIG GET maxmemory
1) "maxmemory"
2) "0"

> CONFIG SET maxmemory 1073741824
OK

*常见错误

错误 原因 解决
ERR unknown command 命令不存在 检查命令拼写和 Redis 版本
ERR CONFIG SET failed 配置值无效或超出范围 检查参数值的有效性
ERR Client not found 指定的客户端 ID 不存在 使用 CLIENT LIST 确认 ID

*最佳实践

  • 定期使用 INFO 监控服务器状态,重点关注 memory、replication、persistence 等 section
  • 使用 CONFIG REWRITE 将内存中的配置修改持久化到配置文件
  • 使用 CLIENT LIST 和 CLIENT KILL 管理客户端连接
  • 生产环境建议设置监控告警,对内存、CPU、连接数等关键指标进行监控
  • 使用 BGSAVE 和 LASTSAVE 确保数据持久化策略有效

*FAQ

Q1: INFO 命令返回的数据格式是什么? A: INFO 返回纯文本格式,以 # 开头的行表示 section 名称,其他行为 key:value 格式。

Q2: CONFIG SET 修改的配置会立即生效吗? A: 大多数配置会立即生效,但部分配置需要重启才能生效。CONFIG SET 修改的配置不会自动保存到配置文件。

Q3: 如何查看所有客户端连接? A: 使用 CLIENT LIST 命令。可以配合 TYPE、ID 等参数过滤特定类型的客户端。