Redis 是一种高性能的内存数据库,常用于缓存、消息队列、会话管理等场景,在 Redis 中,添加数据是最基础的操作之一,掌握相关命令对于高效使用 Redis 至关重要,Redis 提供了多种命令用于添加数据,不同命令适用于不同的数据结构和场景,下面将详细介绍这些命令的使用方法和注意事项。

最常用的添加数据命令是 SET
,用于向 Redis 中存储字符串类型的键值对,其基本语法为 SET key value [EX seconds] [PX milliseconds] [NX|XX]
,key
是键名,value
是要存储的值,EX
和 PX
用于设置过期时间(分别以秒和毫秒为单位),NX
表示键不存在时才设置,XX
表示键存在时才设置。SET user:1001 "Alice" EX 3600
表示将键 user:1001
的值设置为 "Alice",并设置 3600 秒(1 小时)后过期,如果需要批量添加多个键值对,可以使用 MSET
命令,语法为 MSET key1 value1 key2 value2 ...
,MSET user:1002 "Bob" user:1003 "Charlie"
可以一次性设置两个键值对。
对于哈希(Hash)类型数据,添加数据的命令是 HSET
,用于向哈希表中添加字段和值,其语法为 HSET key field value
,HSET user:1001 name "Alice" age 25
表示在哈希表 user:1001
中添加字段 name
和 age
,分别对应值 "Alice" 和 25,如果需要批量添加哈希字段,可以使用 HMSET
命令(Redis 4.0+ 版本中推荐使用 HSET
的批量形式),语法为 HMSET key field1 value1 field2 value2 ...
,如果只需要设置字段且值不存在时才设置,可以使用 HSETNX
命令,语法为 HSETNX key field value
,只有当字段不存在时才会添加。
对于列表(List)类型数据,添加数据的命令包括 LPUSH
和 RPUSH
,分别用于在列表的左侧(头部)和右侧(尾部)添加元素。LPUSH
的语法为 LPUSH key value1 value2 ...
,LPUSH messages "Hello" "World"
表示在列表 messages
的头部依次添加 "Hello" 和 "World",列表结果为 ["Hello", "World"]
;RPUSH
的语法为 RPUSH key value1 value2 ...
,添加顺序与 LPUSH
相反,元素会添加到列表尾部,如果需要向列表中间插入元素,可以使用 LINSERT
命令,语法为 LINSERT key BEFORE|AFTER pivot value
,LINSERT messages BEFORE "World" "Redis"
表示在 "World" 元素前插入 "Redis"。
对于集合(Set)类型数据,添加数据的命令是 SADD
,用于向集合中添加一个或多个元素,如果元素已存在则不会重复添加,其语法为 SADD key member1 member2 ...
,SADD tags "redis" "database" "cache"
表示向集合 tags
中添加三个元素,集合中的元素是无序且唯一的,如果需要添加元素并返回集合中的元素数量,可以使用 SCARD
命令(但 SCARD
是获取数量,不是添加)。

对于有序集合(Sorted Set)类型数据,添加数据的命令是 ZADD
,用于向有序集合中添加元素及其分数,元素按分数从小到大排序,其语法为 ZADD key score1 member1 score2 member2 ...
,ZADD leaderboard 100 "Alice" 200 "Bob"
表示向有序集合 leaderboard
中添加 "Alice"(分数 100)和 "Bob"(分数 200),按分数排序后结果为 ["Alice", "Bob"]
,如果元素已存在,ZADD
会更新其分数;如果需要仅当元素不存在时添加,可以使用 NX
选项,ZADD leaderboard NX 150 "Charlie"
。
以下是常用添加数据命令的总结:
命令 | 数据类型 | 语法示例 | 说明 |
---|---|---|---|
SET | String | SET key value EX 3600 | 设置字符串键值对,可设置过期时间 |
HSET | Hash | HSET key field value | 设置哈希表字段和值 |
LPUSH | List | LPUSH key value1 value2 | 向列表头部添加元素 |
RPUSH | List | RPUSH key value1 value2 | 向列表尾部添加元素 |
SADD | Set | SADD key member1 member2 | 向集合添加元素(不重复) |
ZADD | Sorted Set | ZADD key score1 member1 score2 member2 | 向有序集合添加元素(带分数) |
在使用这些命令时,需要注意键名的命名规范(建议使用冒号分隔的层级结构,如 user:1001:name
),以及数据类型的匹配(不能对 String 类型的键使用 HSET
),对于高频写入的场景,建议使用管道(Pipeline)或批量命令(如 MSET
)来减少网络开销,提高性能。
相关问答 FAQs

-
问:Redis 中如何添加数据并设置过期时间?
答:可以使用SET
命令的EX
或PX
选项,SET key value EX 60
表示设置键值对并 60 秒后过期;也可以使用SETEX
命令,语法为SETEX key seconds value
,SETEX key 60 value
与上述效果相同。 -
问:如何向哈希表中批量添加多个字段?**
答:可以使用HMSET
命令(Redis 4.0+ 版本中推荐使用HSET
的批量形式),语法为HMSET key field1 value1 field2 value2 ...
,HMSET user:1001 name "Alice" age 25 email "alice@example.com"
可以一次性添加多个字段。