Redis 的命令非常丰富,通常按照数据结构进行分类,下面我将按照 Key(键)、String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Sorted Set(有序集合)、Pub/Sub(发布订阅)、Transactions(事务)、Connection(连接)、Server(服务器) 这几个核心模块来详细介绍最常用和最重要的命令。

Key(键)操作命令
Key 是 Redis 中最基本的概念,它可以是任何字符串,用于标识存储在 Redis 中的值。
| 命令 | 语法 | 描述 | 示例 |
|---|---|---|---|
DEL |
DEL key [key ...] |
删除一个或多个 key | DEL mykey |
EXISTS |
EXISTS key |
检查 key 是否存在,存在返回 1,否则 0 | EXISTS mykey |
EXPIRE |
EXPIRE key seconds |
设置 key 的过期时间(秒) | EXPIRE mykey 60 (60秒后过期) |
TTL |
TTL key |
查看一个 key 的剩余生存时间(秒) | TTL mykey |
TYPE |
TYPE key |
返回 key 所存储的值的类型 | TYPE mykey |
KEYS |
KEYS pattern |
查找所有符合给定模式 pattern 的 key | KEYS user:* (查找所有以 "user:" 开头的 key) |
SCAN |
SCAN cursor [MATCH pattern] [COUNT count] |
迭代数据库中的 key(KEYS 的非阻塞替代方案) |
SCAN 0 MATCH user:* COUNT 100 |
MOVE |
MOVE key db |
将当前数据库的 key 移动到指定的数据库 | MOVE mykey 1 (移动到数据库1) |
RENAME |
RENAME key newkey |
重命名 key | RENAME mykey newname |
RENAMENX |
RENAMENX key newkey |
当 newkey 不存在时,重命名 key | RENAMENX mykey newname |
String(字符串)操作命令
String 是 Redis 最基本的数据结构,可以存储文本、JSON、序列化后的对象,甚至是二进制数据(如图片)。
| 命令 | 语法 | 描述 | 示例 |
|---|---|---|---|
SET |
SET key value [EX seconds] |
设置 key 的值,并可选地设置过期时间 | SET name "Alice" |
GET |
GET key |
获取 key 的值 | GET name |
MSET |
MSET key value [key value ...] |
同时设置一个或多个 key-value 对 | MSET name "Bob" age "25" |
MGET |
MGET key [key ...] |
同时获取一个或多个 key 的值 | MGET name age |
INCR |
INCR key |
将 key 中储存的数字值加 1 | INCR visits |
DECR |
DECR key |
将 key 中储存的数字值减 1 | DECR visits |
INCRBY |
INCRBY key increment |
将 key 中储存的数字值加上指定的增量 | INCRBY score 10 |
DECRBY |
DECRBY key decrement |
将 key 中储存的数字值减去指定的减量 | DECRBY score 5 |
APPEND |
APPEND key value |
将指定的值追加到 key 原值的末尾 | APPEND name " Smith" |
SETEX |
SETEX key seconds value |
设置 key 的值,并设置其过期时间(秒) | SETEX temp_data 3600 "some_value" |
Hash(哈希)操作命令
Hash 是一个键值对集合,类似于 Java 中的 HashMap 或 Python 中的字典,适合存储对象信息。
| 命令 | 语法 | 描述 | 示例 |
|---|---|---|---|
HSET |
HSET key field value |
将哈希表 key 中的 field 设置为 value | HSET user:1001 name "Charlie" |
HGET |
HGET key field |
获取存储在哈希表中指定字段的值 | HGET user:1001 name |
HGETALL |
HGETALL key |
获取哈希表中所有的字段和值 | HGETALL user:1001 |
HDEL |
HDEL key field [field ...] |
删除哈希表中的一个或多个指定字段 | HDEL user:1001 age |
HEXISTS |
HEXISTS key field |
检查哈希表中是否存在指定的字段 | HEXISTS user:1001 name |
HINCRBY |
HINCRBY key field increment |
将哈希表中指定字段的整数值加上增量 | HINCRBY user:1001 login_count 1 |
HKEYS |
HKEYS key |
获取哈希表中所有的字段名 | HKEYS user:1001 |
HVALS |
HVALS key |
获取哈希表中所有的值 | HVALS user:1001 |
HLEN |
HLEN key |
获取哈希表中字段的数量 | HLEN user:1001 |
List(列表)操作命令
List 是一个简单的字符串列表,按照插入顺序排序,可以把它看作是一个双向链表,支持在两端进行操作。

| 命令 | 语法 | 描述 | 示例 |
|---|---|---|---|
LPUSH |
LPUSH key value [value ...] |
将一个或多个值插入到列表的头部 | LPUSH tasks "task1" |
RPUSH |
RPUSH key value [value ...] |
将一个或多个值插入到列表的尾部 | RPUSH tasks "task2" |
LPOP |
LPOP key |
移除并返回列表的头元素 | LPOP tasks |
RPOP |
RPOP key |
移除并返回列表的尾元素 | RPOP tasks |
LRANGE |
LRANGE key start stop |
获取列表中指定范围内的元素 | LRANGE tasks 0 -1 (获取所有元素) |
LLEN |
LLEN key |
获取列表的长度 | LLEN tasks |
LINDEX |
LINDEX key index |
通过索引获取列表中的元素 | LINDEX tasks 0 (获取第一个元素) |
LREM |
LREM key count value |
移除列表中与 value 相等的元素 | LREM tasks 2 "task1" (移除前两个 "task1") |
Set(集合)操作命令
Set 是一个无序的、不重复的字符串集合,集合中的元素是唯一的,常用于存储标签、去重等场景。
| 命令 | 语法 | 描述 | 示例 |
|---|---|---|---|
SADD |
SADD key member [member ...] |
向集合添加一个或多个成员 | SADD tags "redis" "database" |
SMEMBERS |
SMEMBERS key |
返回集合中的所有成员 | SMEMBERS tags |
SREM |
SREM key member [member ...] |
移除集合中一个或多个成员 | SREM tags "database" |
SCARD |
SCARD key |
获取集合的成员数 | SCARD tags |
SISMEMBER |
SISMEMBER key member |
判断 member 是否是集合的成员 | SISMEMBER tags "redis" |
SINTER |
SINTER key [key ...] |
返回给定所有集合的交集 | SINTER tags1 tags2 |
SUNION |
SUNION key [key ...] |
返回给定所有集合的并集 | SUNION tags1 tags2 |
SDIFF |
SDIFF key [key ...] |
返回第一个集合与其他所有集合的差集 | SDIFF tags1 tags2 |
Sorted Set(ZSet, 有序集合)操作命令
Sorted Set 是 Set 的升级版,它在每个元素上都关联了一个 double 类型的分数,Redis 通过分数来为集合中的成员进行从小到大的排序,常用于排行榜、带权重的队列等。
| 命令 | 语法 | 描述 | 示例 |
|---|---|---|---|
ZADD |
ZADD key score member [score member ...] |
向有序集合添加一个或多个成员 | ZADD leaderboard 100 "player1" |
ZRANGE |
ZRANGE key start stop [WITHSCORES] |
通过索引区间返回有序集合中指定区间的成员 | ZRANGE leaderboard 0 -1 WITHSCORES |
ZREVRANGE |
ZREVRANGE key start stop [WITHSCORES] |
与 ZRANGE 类似,但返回的是按分数从高到低的排序 |
ZREVRANGE leaderboard 0 -1 WITHSCORES |
ZSCORE |
ZSCORE key member |
获取指定成员的分数 | ZSCORE leaderboard "player1" |
ZINCRBY |
ZINCRBY key increment member |
增加指定成员的分数 | ZINCRBY leaderboard 10 "player1" |
ZCARD |
ZCARD key |
获取有序集合的成员数 | ZCARD leaderboard |
ZREMRANGEBYRANK |
ZREMRANGEBYRANK key start stop |
移除有序集合中指定排名区间的所有成员 | ZREMRANGEBYRANK leaderboard 0 2 (移除前三名) |
ZCOUNT |
ZCOUNT key min max |
计算在指定分数区间的成员数量 | ZCOUNT leaderboard 90 110 |
Pub/Sub(发布订阅)操作命令
Pub/Sub 是一种消息通信模式,发送者(发布者)不是直接发送消息给特定的接收者(订阅者),而是把消息发送到频道,系统将消息转发给所有订阅该频道的订阅者。
| 命令 | 语法 | 描述 | 示例 |
|---|---|---|---|
PUBLISH |
PUBLISH channel message |
将信息发送到指定的频道 | PUBLISH news "hello world" |
SUBSCRIBE |
SUBSCRIBE channel [channel ...] |
订阅给定的一个或多个频道 | SUBSCRIBE news |
UNSUBSCRIBE |
UNSUBSCRIBE [channel] |
退订给定的频道,或退订所有频道 | UNSUBSCRIBE news |
PSUBSCRIBE |
PSUBSCRIBE pattern [pattern ...] |
订阅符合给定模式的频道 | PSUBSCRIBE news.* |
PUNSUBSCRIBE |
PUNSUBSCRIBE [pattern] |
退订符合给定模式的频道 | PUNSUBSCRIBE news.* |
Transactions(事务)操作命令
Redis 事务是一组命令的集合,事务中的所有命令都会被序列化,按顺序地执行,事务在执行期间,不会被其他客户端的命令打断。

| 命令 | 语法 | 描述 | 示例 |
|---|---|---|---|
MULTI |
MULTI |
标记一个事务块的开始 | MULTI |
EXEC |
EXEC |
执行事务块中的所有命令 | EXEC |
DISCARD |
DISCARD |
取消事务,放弃执行事务块中的所有命令 | DISCARD |
WATCH |
WATCH key [key ...] |
监视一个或多个 key,如果在事务执行前这些 key 被其他命令修改,则事务会失败 | WATCH mykey |
UNWATCH |
UNWATCH |
取消所有 WATCH 命令对 key 的监视 |
UNWATCH |
Connection(连接)操作命令
这些命令用于管理客户端与 Redis 服务器的连接。
| 命令 | 语法 | 描述 | 示例 |
|---|---|---|---|
AUTH |
AUTH password |
验证密码 | AUTH mypassword |
PING |
PING [message] |
查看服务是否运行,可选地返回 message | PING |
ECHO |
ECHO message |
打印指定的字符串 | ECHO "hello" |
SELECT |
SELECT index |
切换到指定的数据库 | SELECT 1 |
QUIT |
QUIT |
关闭连接 | QUIT |
Server(服务器)操作命令
这些命令用于管理 Redis 服务器本身。
| 命令 | 语法 | 描述 | 示例 |
|---|---|---|---|
INFO |
INFO [section] |
返回关于 Redis 服务器的各种信息和统计 | INFO server |
CONFIG GET |
CONFIG GET parameter |
获取 Redis 服务器的配置参数 | CONFIG GET maxmemory |
CONFIG SET |
CONFIG SET parameter value |
运行时动态地设置 Redis 服务器的配置参数 | CONFIG SET maxmemory 1gb |
FLUSHDB |
FLUSHDB [ASYNC] |
删除当前数据库的所有 key | FLUSHDB |
FLUSHALL |
FLUSHALL [ASYNC] |
删除所有数据库的所有 key | FLUSHALL |
SAVE |
SAVE |
同步保存数据到磁盘 | SAVE |
BGSAVE |
BGSAVE |
在后台异步保存数据到磁盘 | BGSAVE |
如何使用这些命令?
最直接的方式是使用 redis-cli(Redis Command Line Interface)。
-
连接 Redis:
redis-cli
Redis 运行在远程服务器或非默认端口:
redis-cli -h your_host -p your_port -a your_password
-
在
redis-cli中执行命令: 连接成功后,会看到一个0.0.1:6379>提示符,直接输入命令即可。0.0.1:6379> SET mykey "hello" OK 127.0.0.1:6379> GET mykey "hello" 127.0.0.1:6379> LPUSH mylist "item1" (integer) 1 127.0.0.1:6379> LPUSH mylist "item2" (integer) 2 127.0.0.1:6379> LRANGE mylist 0 -1 1) "item2" 2) "item1"
-
退出
redis-cli:0.0.1:6379> QUIT
| 数据结构 | 主要用途 | 核心命令 |
|---|---|---|
| String | 缓存、计数器、对象存储 | SET, GET, INCR, MSET |
| Hash | 存储对象(如用户信息、配置) | HSET, HGET, HGETALL, HINCRBY |
| List | 消息队列、栈、最新列表 | LPUSH, RPUSH, LPOP, RPOP, LRANGE |
| Set | 标签、共同好友、去重 | SADD, SMEMBERS, SREM, SINTER |
| Sorted Set | 排行榜、优先级队列 | ZADD, ZRANGE, ZINCRBY, ZSCORE |
掌握这些核心命令是使用 Redis 的基础,建议你亲自在 redis-cli 中多加练习,以加深理解和记忆。
