Redis(Remote Dictionary Server)是一个开源的、高性能的键值存储系统,广泛应用于缓存、消息队列、会话管理等场景,其命令丰富且功能强大,覆盖了数据操作、服务器管理、持久化等多个方面,以下将详细介绍Redis的主要命令分类及具体用法,并辅以表格说明,最后附上相关FAQs。

键值操作命令
键值操作是Redis最基础的功能,包括键的增删改查及管理。
- SET:设置键值,如
SET key value
,可添加过期时间(EX
秒或PX
毫秒)。 - GET:获取键值,如
GET key
,若键不存在返回nil
。 - DEL:删除键,支持批量删除,如
DEL key1 key2
。 - EXISTS:检查键是否存在,返回1(存在)或0(不存在)。
- EXPIRE:设置键的过期时间,如
EXPIRE key 60
(60秒后自动删除)。 - TTL:查看键的剩余生存时间,返回-1表示永不过期,-2表示键不存在。
- TYPE:返回键的数据类型,如
string
、hash
、list
等。
命令 | 示例 | 说明 |
---|---|---|
SET | SET name "Alice" |
设置字符串键值 |
GET | GET name |
获取字符串键值 |
DEL | DEL name |
删除键 |
EXPIRE | EXPIRE name 10 |
设置10秒后过期 |
字符串操作
字符串是Redis最简单的数据类型,支持二进制安全存储。
- INCR:键值加1,如
INCR count
(若键不存在,初始化为0后加1)。 - DECR:键值减1,如
DECR count
。 - INCRBY:指定增量,如
INCRBY count 5
(加5)。 - APPEND:追加值,如
APPEND name " Bob"
(原值变为"Alice Bob")。 - SETRANGE:从指定位置覆盖字符串,如
SETRANGE name 0 "Bob"
(替换为"Bob")。
哈希操作
哈希(Hash)是键值对集合,适合存储对象。
- HSET:设置字段值,如
HSET user:1 name "Alice"
。 - HGET:获取字段值,如
HGET user:1 name
。 - HGETALL:获取所有字段和值,如
HGETALL user:1
。 - HDEL:删除字段,如
HDEL user:1 name
。 - HEXISTS:检查字段是否存在,如
HEXISTS user:1 name
。
命令 | 示例 | 说明 |
---|---|---|
HSET | HSET user:1 age 25 |
设置哈希字段 |
HGETALL | HGETALL user:1 |
获取哈希所有字段和值 |
HINCRBY | HINCRBY user:1 score 5 |
字段值加5 |
列表操作
列表(List)是字符串元素的有序集合,支持双向操作。

- LPUSH:左侧插入元素,如
LPUSH list "A"
(列表变为["A"]
)。 - RPUSH:右侧插入元素,如
RPUSH list "B"
(列表变为["A", "B"]
)。 - LPOP:左侧弹出元素,如
LPOP list
(返回"A",列表变为["B"]
)。 - RPOP:右侧弹出元素,如
RPOP list
(返回"B")。 - LRANGE:获取范围元素,如
LRANGE list 0 -1
(返回整个列表)。
集合操作
集合(Set)是无序的唯一元素集合,支持交集、并集等操作。
- SADD:添加元素,如
SADD set "A"
(元素不重复)。 - SMEMBERS:获取所有元素,如
SMEMBERS set
。 - SREM:删除元素,如
SREM set "A"
。 - SINTER:求交集,如
SINTER set1 set2
。 - SUNION:求并集,如
SUNION set1 set2
。
有序集合操作
有序集合(ZSet)是带有分数的唯一元素集合,元素按分数排序。
- ZADD:添加元素及分数,如
ZADD zset 100 "A"
(分数100,元素"A")。 - ZRANGE:按索引范围获取元素,如
ZRANGE zset 0 -1
(默认升序)。 - ZSCORE:获取元素分数,如
ZSCORE zset "A"
。 - ZINCRBY:增加元素分数,如
ZINCRBY zset "A" 50
(分数加50)。
其他高级命令
- KEYS:匹配键名,如
KEYS user:*
(返回所有"user:"开头的键),生产环境慎用。 - SCAN:增量遍历键,避免阻塞,如
SCAN 0 MATCH user:* COUNT 10
。 - MULTI/EXEC:事务操作,如
MULTI
开启事务,SET key1 value1
,EXEC
执行事务。 - PUBLISH/SUBSCRIBE:发布/订阅消息,如
PUBLISH channel "Hello"
,SUBSCRIBE channel
。
服务器管理命令
- INFO:获取服务器信息,如
INFO memory
(内存使用情况)。 - CONFIG GET:获取配置参数,如
CONFIG GET maxmemory
。 - FLUSHDB:清空当前数据库,如
FLUSHDB
。 - SAVE:手动触发持久化,保存数据到RDB文件。
相关问答FAQs
Q1: Redis如何避免KEYS命令造成性能问题?
A1: KEYS
命令会阻塞服务器,生产环境应避免使用,替代方案是使用SCAN
命令,它通过游标增量遍历键,不会阻塞服务器。SCAN 0 MATCH user:* COUNT 100
,其中0
是游标初始值,COUNT
建议设为100~1000以平衡性能与结果完整性。
Q2: Redis事务是否具有原子性?
A2: Redis事务通过MULTI
和EXEC
实现,但与关系型数据库事务不同:

- 原子性:
EXEC
执行时,如果命令语法错误,会跳过该命令但继续执行后续命令;若运行时错误(如类型不匹配),命令仍会执行,可能导致部分成功。 - 隔离性:事务执行期间,其他客户端的命令不会被阻塞,但不会读取到事务未提交的中间状态。
若需强一致性,可通过WATCH
监视键,若键被修改则事务回退。