Redis 作为高性能的内存数据库,其管理命令是运维和开发人员日常操作的核心工具,这些命令不仅涵盖数据的基本操作,还包括服务器状态监控、性能优化、数据持久化等关键功能,以下从多个维度详细介绍 Redis 的管理命令,帮助用户全面掌握其使用方法。

服务器信息与管理命令
Redis 提供了一系列命令用于获取服务器状态和进行基础管理。INFO
命令是核心,通过不同参数返回详细信息,INFO server
显示服务器版本、运行时间、连接数等;INFO memory
输出内存使用情况,包括已用内存、峰值内存、碎片率等。CONFIG GET/SET
命令用于动态调整配置参数,如 CONFIG maxmemory 4gb
设置最大内存限制,CONFIG maxmemory-policy allkeys-lru
定义内存淘汰策略。SHUTDOWN
命令用于安全关闭服务器,支持 NOSAVE
(不持久化直接关闭)和 SAVE
(保存数据后关闭)选项。
连接与客户端管理
CLIENT LIST
命令列出所有连接的客户端信息,包括 IP 地址、端口、连接时间、最后一次交互时间等,便于排查异常连接。CLIENT KILL
可强制断开指定客户端,CLIENT KILL ip 192.168.1.100:12345
断开特定 IP 和端口的连接。CLIENT SETNAME
和 CLIENT GETNAME
用于设置和获取客户端名称,便于监控和调试。AUTH
命令用于密码认证,需在配置文件中启用 requirepass
参数。
数据持久化与备份管理
Redis 的持久化功能通过 SAVE
和 BGSAVE
命令实现。SAVE
同步保存数据到磁盘,会阻塞服务器;BGSAVE
异步保存,通过 fork 子进程执行,不影响主进程运行。LASTSAVE
返回最后一次成功保存的时间戳。BGREWRITEAOF
用于重写 AOF 文件,压缩日志体积。FLUSHDB
和 FLUSHALL
分别清空当前数据库和所有数据库数据,慎用!备份时可通过 redis-cli --rdb /path/to/backup.rdb
生成 RDB 文件。
性能监控与调试命令
MONITOR
命令实时监控所有客户端请求,适用于调试但会消耗性能。SLOWLOG
记录慢查询日志,通过 SLOWLOG GET
获取慢查询列表,SLOWLOG LEN
查看慢查询数量,SLOWLOG RESET
清空日志。DEBUG OBJECT
分析键的内部编码和内存占用,DEBUG OBJECT mykey
返回对象的详细信息。MEMORY USAGE
命令精确计算键的内存使用,如 MEMORY USAGE mykey
返回指定键占用的字节数。

数据库管理与安全控制
SELECT
命令切换数据库(0-15),FLUSHDB
清空当前数据库。MOVE
将键移动到指定数据库,如 MOVE mykey 1
将 mykey
移动到数据库 1。EXPIRE
和 TTL
用于设置键的过期时间,EXPIRE mykey 3600
设置 3600 秒后过期,TTL mykey
查看剩余时间。RENAME
和 RENAMENX
用于重命名键,后者确保新键名不存在,安全方面,ACL
命令管理访问控制列表,可精细控制用户权限,如 ACL SETUSER alice on +@read -@write
为用户 alice
设置只读权限。
高级功能管理
Redis 支持发布订阅功能,PUBLISH channel message
发布消息,SUBSCRIBE channel
订阅频道。PSUBSCRIBE pattern
支持通配符订阅。PUNSUBSCRIBE
取消订阅。SCAN
命令用于迭代数据库键,避免 KEYS
命令的阻塞问题,SCAN 0 MATCH user* COUNT 100
分页查找以 user
开头的键。EVAL
执行 Lua 脚本,实现复杂逻辑,如 EVAL "return redis.call('get', KEYS[1])" 1 mykey
获取键值。
主从复制与集群管理
在主从架构中,SLAVEOF
命令配置从服务器,如 SLAVEOF 192.168.1.100 6379
设置主服务器地址。INFO replication
查看复制状态,集群模式下,CLUSTER NODES
返回节点信息,CLUSTER MEET
添加节点,CLUSTER FAILOVER
手动故障转移。
相关问答FAQs
Q1: 如何查看 Redis 的内存使用情况并优化?
A: 使用 INFO memory
命令查看内存详情,重点关注 used_memory
、used_memory_peak
和 mem_fragmentation_ratio
,若碎片率过高(如 >1.5),可通过 MEMORY PURGE
尝试释放空闲页;若内存不足,结合 maxmemory
和 maxmemory-policy
设置淘汰策略(如 allkeys-lru
),或优化数据结构(如用 Hash 替代 String 存储对象)。

Q2: Redis 突然无法连接,如何排查?
A: 首先检查 INFO server
中的 connected_clients
和 blocked_clients
,确认是否达到连接上限或存在阻塞命令,然后使用 CLIENT LIST
查看异常客户端(如长时间未交互),若认证失败,检查 requirepass
配置是否正确,若内存溢出,查看 INFO memory
的 used_memory
是否超过 maxmemory
,并调整淘汰策略或扩容,最后检查网络连接和防火墙设置。