1164 字
6 分钟
Redis常用命令
Redis常用命令
Redis 是一个基于内存的高性能键值对(Key-Value)数据库。它的强大之处在于支持丰富的数据结构。为了方便理解,我们可以按照 Redis 的核心数据类型以及全局键操作来对常用命令进行分类讲解。
1. 全局 Key 操作命令
这些命令适用于所有数据类型,主要用于管理键(Key)的生命周期和状态。
| 命令 | 说明 | 示例 |
|---|---|---|
KEYS | 查找所有符合给定模式的 Key(生产环境慎用,可能阻塞线程)。 | KEYS * (查找所有), KEYS user:* |
EXISTS | 检查指定的 Key 是否存在(存在返回 1,否则返回 0)。 | EXISTS mykey |
TYPE | 返回 Key 所存储的值的数据类型。 | TYPE mykey |
DEL | 删除已存在的 Key。 | DEL mykey1 mykey2 |
EXPIRE | 为 Key 设置过期时间(单位:秒)。过期后会被自动删除。 | EXPIRE mykey 60 (60秒后过期) |
TTL | 查看 Key 的剩余生存时间(单位:秒)。返回 -1 表示永久,-2 表示已过期。 | TTL mykey |
2. String(字符串)常用命令
String 是 Redis 最基本的数据类型,不仅可以存储字符串,还可以存储数字甚至是序列化后的对象(如 JSON)。
| 命令 | 说明 | 示例 |
|---|---|---|
SET | 设置指定 Key 的值。如果 Key 已存在则覆盖。 | SET name "Gemini" |
GET | 获取指定 Key 的值。 | GET name |
MSET | 批量设置一个或多个 Key-Value 对。 | MSET key1 "val1" key2 "val2" |
MGET | 批量获取一个或多个 Key 的值。 | MGET key1 key2 |
SETNX | 只有在 Key 不存在时才设置它的值(常用于实现分布式锁)。 | SETNX lock "1" |
INCR | 将 Key 中储存的数字值增一(原子操作)。 | INCR counter |
DECR | 将 Key 中储存的数字值减一。 | DECR counter |
3. Hash(哈希)常用命令
Hash 是一个键值对集合,非常适合用来存储对象(例如存储一个用户的详细信息:姓名、年龄、邮箱等)。
| 命令 | 说明 | 示例 |
|---|---|---|
HSET | 将哈希表 Key 中的字段 field 的值设为 value。 | HSET user:1 name "Alice" age 25 |
HGET | 获取哈希表 Key 中给定字段 field 的值。 | HGET user:1 name |
HGETALL | 获取哈希表 Key 中所有的字段和值。 | HGETALL user:1 |
HDEL | 删除哈希表 Key 中的一个或多个指定字段。 | HDEL user:1 age |
HEXISTS | 查看哈希表 Key 中,指定的字段是否存在。 | HEXISTS user:1 name |
HKEYS | 获取哈希表中的所有字段名(field)。 | HKEYS user:1 |
4. List(列表)常用命令
List 简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。常用于消息队列或最新动态列表。
| 命令 | 说明 | 示例 |
|---|---|---|
LPUSH | 将一个或多个值插入到列表头部(左侧)。 | LPUSH mylist "world" "hello" |
RPUSH | 将一个或多个值插入到列表尾部(右侧)。 | RPUSH mylist "!" |
LPOP | 移出并获取列表的第一个元素(左侧)。 | LPOP mylist |
RPOP | 移出并获取列表的最后一个元素(右侧)。 | RPOP mylist |
LRANGE | 获取列表指定范围内的元素(0 表示第一个,-1 表示最后一个)。 | LRANGE mylist 0 -1 (获取全部) |
LLEN | 获取列表长度。 | LLEN mylist |
5. Set(集合)常用命令
Set 是 String 类型的无序集合,集合成员是唯一的,不能出现重复的数据。常用于社交关系(如共同好友)、标签打标等。
| 命令 | 说明 | 示例 |
|---|---|---|
SADD | 向集合添加一个或多个成员(自动去重)。 | SADD tags "redis" "database" |
SMEMBERS | 返回集合中的所有成员。 | SMEMBERS tags |
SISMEMBER | 判断元素是否是集合的成员。 | SISMEMBER tags "redis" |
SREM | 移除集合中一个或多个成员。 | SREM tags "database" |
SCARD | 获取集合的成员总数。 | SCARD tags |
SINTER | 返回给定所有集合的交集(如找共同好友)。 | SINTER set1 set2 |
6. Sorted Set / ZSet(有序集合)常用命令
ZSet 和 Set 一样也是不可重复的集合,不同的是每个元素都会关联一个 double 类型的分数(Score)。Redis 通过分数来为集合中的成员进行从小到大的排序。常用于排行榜系统。
| 命令 | 说明 | 示例 |
|---|---|---|
ZADD | 向有序集合添加一个或多个成员,或者更新已存在成员的分数。 | ZADD leaderboard 100 "Alice" 90 "Bob" |
ZRANGE | 通过索引区间返回有序集合成指定区间内的成员(按分数递增排)。 | ZRANGE leaderboard 0 -1 WITHSCORES |
ZREVRANGE | 通过索引区间返回指定区间内的成员(按分数递减排)。 | ZREVRANGE leaderboard 0 2 (前三名) |
ZSCORE | 返回有序集合中,成员的分数值。 | ZSCORE leaderboard "Alice" |
ZREM | 移除有序集合中的一个或多个成员。 | ZREM leaderboard "Bob" |
ZRANK | 返回有序集合中指定成员的排名(按分数从小到大排,0为第一)。 | ZRANK leaderboard "Alice" |