Redis(Remote Dictionary Server)是一个开源的、基于内存的高性能键值数据库,常用于缓存、消息队列、实时统计等场景,它支持多种数据结构,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等,每种数据结构都有对应的命令集,以下是Redis常用命令的详细介绍,涵盖数据操作、服务器管理、持久化、事务等功能,并辅以表格形式归纳核心命令,最后附相关FAQs解答。

字符串(String)操作命令
字符串是Redis最基本的数据结构,可以存储文本、JSON、序列化对象等,常用命令包括:
SET key value [EX seconds] [PX milliseconds]
:设置键值对,可指定过期时间(EX秒或PX毫秒)。GET key
:获取键对应的值。DEL key [key ...]
:删除一个或多个键。INCR key
:将键的值加1(值必须为整数)。DECR key
:将键的值减1。EXPIRE key seconds
:设置键的过期时间(秒)。TTL key
:查看键的剩余过期时间(秒),-1表示永不过期,-2表示键不存在。
示例:
SET user:1:name "Alice" EX 3600
(设置键并1小时后过期)
GET user:1:name
(返回"Alice")
哈希(Hash)操作命令
哈希是键值对集合,适合存储对象(如用户信息),常用命令:
HSET key field value
:设置哈希表中字段值。HGET key field
:获取哈希表中字段值。HGETALL key
:获取哈希表中所有字段和值。HDEL key field [field ...]
:删除哈希表中指定字段。HINCRBY key field increment
:将字段值增加指定整数。
示例:
HSET user:1 age 25 city "Beijing"
HGETALL user:1
(返回age:25, city:"Beijing")

列表(List)操作命令
列表是字符串元素的有序集合,支持双向操作,常用作队列,命令:
LPUSH key value [value ...]
:将值插入列表头部。RPUSH key value [value ...]
:将值插入列表尾部。LPOP key
:移除并返回列表头部元素。RPOP key
:移除并返回列表尾部元素。LRANGE key start stop
:获取列表指定范围内的元素(0表示第一个,-1表示最后一个)。
示例:
LPUSH queue "task1"
(列表头部添加"task1")
LRANGE queue 0 -1
(返回所有元素)
集合(Set)操作命令
集合是无序且唯一的字符串元素集合,支持交集、并集等操作,命令:
SADD key member [member ...]
:向集合添加成员。SMEMBERS key
:返回集合中所有成员。SREM key member [member ...]
:移除集合中指定成员。SINTER key [key ...]
:返回多个集合的交集。SUNION key [key ...]
:返回多个集合的并集。
示例:
SADD tags "redis" "database"
SMEMBERS tags
(返回"redis", "database")

有序集合(Sorted Set)操作命令
有序集合是带分数(score)的成员集合,成员按分数排序,命令:
ZADD key score member [score member ...]
:添加成员并指定分数。ZRANGE key start stop [WITHSCORES]
:返回指定排名范围内的成员(按分数升序)。ZREVRANGE key start stop [WITHSCORES]
:按分数降序返回成员。ZSCORE key member
:获取成员的分数。ZINCRBY key increment member
:增加成员的分数。
示例:
ZADD leaderboard 100 "Alice" 200 "Bob"
ZRANGE leaderboard 0 -1 WITHSCORES
(返回Alice:100, Bob:200)
键管理命令
KEYS pattern
:匹配符合模式的键(生产环境慎用,性能开销大)。EXISTS key [key ...]
:检查键是否存在。TYPE key
:返回键的数据类型。RENAME key newkey
:重命名键。RANDOMKEY
:随机返回一个键。
服务器与持久化命令
INFO [section]
:返回服务器信息(如内存、客户端连接)。SAVE
:同步保存数据到磁盘(阻塞操作)。BGSAVE
:异步保存数据到磁盘。FLUSHDB
:清空当前数据库。FLUSHALL
:清空所有数据库。
事务与脚本命令
MULTI
:开启事务。EXEC
:执行事务中的命令。DISCARD
:取消事务。EVAL script numkeys key [key ...] arg [arg ...]
:执行Lua脚本。
示例:
MULTI
SET temp 100
INCR temp
EXEC
(原子性执行)
核心命令速查表
数据结构 | 常用命令 | 功能描述 |
---|---|---|
String | SET, GET, INCR, EXPIRE | 设置、获取、递增、设置过期时间 |
Hash | HSET, HGET, HGETALL | 设置字段、获取字段值、获取所有字段 |
List | LPUSH, RPUSH, LPOP | 头部/尾部插入、头部弹出 |
Set | SADD, SMEMBERS, SINTER | 添加成员、获取所有成员、交集运算 |
Sorted Set | ZADD, ZRANGE, ZSCORE | 添加成员并设分数、按范围获取成员、获取分数 |
相关问答FAQs
Q1: Redis如何避免KEYS命令导致的性能问题?
A: KEYS pattern
会阻塞服务器,生产环境建议使用SCAN cursor [MATCH pattern] [COUNT count]
命令。SCAN
是游标式遍历,非阻塞且可分批返回结果,例如SCAN 0 MATCH user:* COUNT 100
。
Q2: Redis持久化机制RDB和AOF如何选择?
A: RDB(Redis Database)通过快照定期保存数据,恢复速度快但可能丢失最后一次快照后的数据;AOF(Append Only File)记录所有写命令,数据安全性高但文件较大且恢复慢,建议:
- 对数据安全性要求高:开启AOF(可配置
appendfsync everysec
)。 - 对性能要求高:使用RDB,或两者结合(同时开启RDB和AOF,AOF优先级更高)。