Redis控制台命令是管理与操作Redis数据库的核心工具,通过命令行界面(CLI)可以直接与Redis服务器交互,实现数据存取、配置管理、性能监控等功能,Redis命令遵循特定的语法规则,通常以命令名开头,后跟参数,例如SET key value用于设置键值对,以下从基础操作、数据类型操作、高级功能及管理维护四个维度,详细解析常用Redis控制台命令。

基础操作命令
基础操作是Redis日常使用中最频繁的命令,主要包括键的增删查、服务器信息查询等。
-
键操作
SET key value [EX seconds] [PX milliseconds] [NX|XX]:设置键值对,支持过期时间(EX秒/PX毫秒)和条件(NX键不存在时设置/XX键存在时设置)。GET key:获取键对应的值,若键不存在返回nil。DEL key [key ...]:删除一个或多个键,返回删除的键数量。EXISTS key:检查键是否存在,存在返回1,否则返回0。TTL key:查看键的剩余生存时间(秒),返回-1表示永不过期,-2表示键不存在。EXPIRE key seconds:设置键的过期时间(秒),成功返回1,失败返回0。
-
服务器信息
INFO [section]:返回服务器信息,section可选如server、memory、clients等,不指定则返回全部信息。PING:测试服务器连接,返回PONG表示正常。ECHO message:返回输入的message,用于测试或调试。
数据类型操作命令
Redis支持5种基本数据类型,每种类型有专属操作命令。

| 数据类型 | 常用命令 | 功能说明 |
|---|---|---|
| String | APPEND key value、STRLEN key、INCR key、DECR key |
追加值、获取长度、递增/递减(数值类型) |
| List | LPUSH key value [value ...]、RPUSH key value、LRANGE key start stop |
左侧/右侧推入元素,获取范围内元素(start/stop为负数表示从末尾计数) |
| Hash | HSET key field value、HGET key field、HGETALL key |
设置/获取哈希表字段,获取所有字段和值 |
| Set | SADD key member [member ...]、SMEMBERS key、SINTER key1 key2 |
添加成员、获取所有成员、求多个集合的交集 |
| ZSet | ZADD key score member [score member ...]、ZRANGE key start stop [WITHSCORES] |
添加有序集合成员(带分数),按分数范围排序成员,WITHSCORES显示分数 |
示例:
- 操作String:
SET name "Alice"设置字符串,GET name获取值,INCR visits将数值加1。 - 操作List:
LPUSH tasks "task1"将任务加入列表左侧,LRANGE tasks 0 -1获取所有任务。 - 操作Hash:
HSET user:1 name "Bob" age 25设置用户信息,HGET user:1 age获取年龄。
高级功能命令
Redis的高级功能包括事务、持久化、发布订阅等,适用于复杂场景。
-
事务
MULTI:开启事务,后续命令进入队列,不会立即执行。EXEC:执行事务队列中的所有命令,若命令语法错误则全部不执行;若运行时错误,已执行的命令不会回滚。DISCARD:取消事务,清空队列。
-
持久化
(图片来源网络,侵删)SAVE:同步保存数据到RDB文件,阻塞服务器。BGSAVE:异步保存数据,适合生产环境。LASTSAVE:返回最后一次成功保存的时间戳。
-
发布订阅
PUBLISH channel message:向指定频道发送消息。SUBSCRIBE channel [channel ...]:订阅一个或多个频道,接收消息后阻塞客户端。
管理维护命令
管理命令用于监控服务器状态、调整配置、清理数据等。
CONFIG GET parameter:获取配置参数,如CONFIG GET maxmemory查看最大内存限制。CONFIG SET parameter value:动态修改配置,如CONFIG SET maxmemory-policy allkeys-lru设置内存淘汰策略。FLUSHDB:清空当前数据库,FLUSHALL清空所有数据库。CLIENT LIST:列出所有客户端连接信息,包括IP、端口、命令统计等。SLOWLOG [get/len/reset]:管理慢查询日志,如SLOWLOG get 10获取最近10条慢查询。
相关问答FAQs
Q1: Redis中如何批量删除符合某个模式的键?
A: 使用KEYS命令匹配键模式(如KEYS user:*),但KEYS会阻塞服务器,生产环境建议用SCAN命令分批遍历。
SCAN 0 MATCH user:* COUNT 100 # 从游标0开始,每次返回100个匹配键
结合DEL命令删除:DEL $(redis-cli --scan --pattern "user:*")(Linux环境下)。
Q2: Redis事务能否保证原子性?什么情况下会失败?
A: Redis事务能保证命令的原子性执行,但仅限于语法错误(如命令不存在)时,整个事务会回滚;若命令运行时错误(如对字符串执行INCR),已执行的命令不会回滚,后续命令仍会执行。
MULTI SET num "10" INCR num # 正常执行 INCR name # 运行时错误(name非数值) EXEC # 返回结果:[OK, 11, error] # name的INCR失败,但num已递增
需确保事务中命令的运行时逻辑正确,或通过Lua脚本实现更严格的原子操作。
