Redis是一款高性能的内存数据库,常用于缓存、消息队列、实时统计等场景,掌握Redis的使用命令是高效操作Redis的基础,本文将详细介绍Redis的核心命令及其使用方法,涵盖键值操作、数据类型操作、事务、持久化等关键功能。

键值操作命令
Redis中的所有数据都是以键值对形式存储的,键是字符串类型,值可以是字符串、哈希、列表、集合、有序集合等多种数据类型,以下是常用的键值操作命令:
-
设置键值
SET key value [EX seconds] [PX milliseconds] [NX|XX]
:设置键值,可指定过期时间(EX秒或PX毫秒),NX表示键不存在时才设置,XX表示键存在时才设置。- 示例:
SET name "Alice" EX 60
设置name键的值为"Alice",60秒后过期。
-
获取键值
GET key
:获取键对应的值,若键不存在则返回nil。- 示例:
GET name
返回"Alice"。
-
删除键
(图片来源网络,侵删)DEL key [key ...]
:删除一个或多个键,返回删除的键数量。- 示例:
DEL name
删除name键。
-
键是否存在
EXISTS key
:检查键是否存在,存在返回1,否则返回0。- 示例:
EXISTS name
返回1。
-
键过期时间操作
EXPIRE key seconds
:设置键的过期时间(秒)。TTL key
:查看键的剩余过期时间(秒),-1表示永不过期,-2表示键不存在。- 示例:
EXPIRE name 30
设置30秒后过期,TTL name
返回剩余时间。
-
键重命名
RENAME key newkey
:重命名键,若新键已存在则覆盖。RENAMENX key newkey
:新键不存在时才重命名。- 示例:
RENAME name username
将name重命名为username。
数据类型操作命令
Redis支持5种基本数据类型,每种类型都有专属的操作命令。

字符串(String)
字符串是最简单的数据类型,可以存储文本、JSON、序列化对象等。
-
批量操作
MSET key value [key value ...]
:批量设置多个键值。MGET key [key ...]
:批量获取多个键的值。- 示例:
MSET key1 "v1" key2 "v2"
,MGET key1 key2
返回["v1", "v2"]。
-
数值递增/递减
INCR key
:键值递增1(值需为整数)。DECR key
:键值递减1。INCRBY key increment
:按指定值递增。- 示例:
INCR visits
,若visits初始为10,执行后为11。
哈希(Hash)
哈希是键值对集合,适合存储对象(如用户信息)。
-
设置和获取字段
HSET key field value
:设置哈希字段值。HGET key field
:获取字段值。HGETALL key
:获取哈希所有字段和值。- 示例:
HSET user:1 name "Bob" age 30
,HGETALL user:1
返回name和Bob、age和30。
-
删除字段
HDEL key field [field ...]
:删除一个或多个字段。- 示例:
HDEL user:1 age
删除age字段。
列表(List)
列表是字符串有序集合,可重复,常作消息队列。
-
从左侧/右侧插入元素
LPUSH key value [value ...]
:从左侧(头部)插入一个或多个元素。RPUSH key value [value ...]
:从右侧(尾部)插入。- 示例:
LPUSH queue "task1"
,队列左侧为["task1"]。
-
弹出元素
LPOP key
:从左侧弹出元素。RPOP key
:从右侧弹出。- 示例:
LPOP queue
返回"task1"。
-
获取列表长度和范围
LLEN key
:返回列表长度。LRANGE key start stop
:获取列表指定范围元素(0为第一个,-1为最后一个)。- 示例:
LRANGE queue 0 -1
返回整个列表。
集合(Set)
集合是无序且不重复的字符串集合,常用于标签、去重。
-
添加和删除元素
SADD key member [member ...]
:添加一个或多个元素。SREM key member [member ...]
:删除元素。- 示例:
SADD tags "redis" "db"
,SREM tags "db"
删除"db"。
-
集合运算
SINTER key [key ...]
:交集。SUNION key [key ...]
:并集。SDIFF key [key ...]
:差集。- 示例:
SINTER set1 set2
返回两个集合的交集。
有序集合(ZSet)
有序集合是带分数的集合,元素按分数排序,常用于排行榜。
-
添加元素和设置分数
ZADD key score member [score member ...]
:添加元素并设置分数。- 示例:
ZADD leaderboard 100 "Alice" 90 "Bob"
。
-
按分数范围获取元素
ZRANGE key start stop [WITHSCORES]
:按分数从低到高获取元素。ZREVRANGE key start stop [WITHSCORES]
:从高到低获取。- 示例:
ZRANGE leaderboard 0 -1 WITHSCORES
返回所有元素及分数。
-
按分数范围删除元素
ZREMRANGEBYSCORE key min max
:删除分数在[min, max]之间的元素。- 示例:
ZREMRANGEBYSCORE leaderboard 0 89
删除分数小于90的元素。
高级功能命令
事务(Transaction)
Redis事务是一组命令的序列化执行,要么全部执行,要么全部不执行。
MULTI
:开启事务。EXEC
:执行事务中的所有命令。DISCARD
:取消事务。- 示例:
MULTI SET key1 "v1" SET key2 "v2" EXEC
执行后key1和key2同时被设置。
持久化
Redis支持两种持久化方式:RDB和AOF。
-
RDB(Redis Database)
SAVE
:同步保存数据到磁盘(阻塞服务器)。BGSAVE
:异步保存(推荐)。- 示例:
BGSAVE
在后台生成RDB快照。
-
AOF(Append Only File)
APPENDONLY yes
:启用AOF持久化。BGREWRITEAOF
:重写AOF文件(压缩日志)。- 示例:
BGREWRITEAOF
优化AOF文件大小。
常用命令总结表
功能分类 | 命令示例 | 说明 |
---|---|---|
键值操作 | SET key value EX 60 | 设置键值并指定过期时间 |
GET key | 获取键值 | |
DEL key | 删除键 | |
字符串操作 | INCR key | 数值递增1 |
MSET k1 v1 k2 v2 | 批量设置键值 | |
哈希操作 | HSET key field value | 设置哈希字段值 |
HGETALL key | 获取哈希所有字段和值 | |
列表操作 | LPUSH key value | 从左侧插入元素 |
LRANGE key 0 -1 | 获取列表所有元素 | |
集合操作 | SADD key member | 添加元素到集合 |
SINTER key1 key2 | 求集合交集 | |
有序集合操作 | ZADD key score member | 添加元素并设置分数 |
ZRANGE key 0 -1 WITHSCORES | 获取有序集合所有元素及分数 | |
事务操作 | MULTI ... EXEC | 执行事务 |
持久化操作 | BGSAVE | 异步保存RDB快照 |
BGREWRITEAOF | 重写AOF文件 |
相关问答FAQs
问题1:Redis如何设置键的过期时间?有哪些注意事项?
解答:使用EXPIRE key seconds
或SETEX key seconds value
命令设置过期时间,注意事项包括:(1)过期时间设置后可通过TTL key
查看剩余时间;(2)对已存在的键设置过期时间会覆盖原有过期时间;(3)删除键或覆盖键值会清除过期时间;(4)持久化时,RDB会保存过期键的状态,而AOF通过记录DEL或EXPIRE命令实现过期逻辑。
问题2:Redis的列表(List)和集合(Set)有什么区别?分别适用于什么场景?
解答:列表(List)是有序且可重复的元素集合,支持双向操作(如LPUSH/RPOP),适用于消息队列、任务列表等需要顺序和重复元素的场景;集合(Set)是无序且不重复的元素集合,支持集合运算(如并集、交集),适用于标签系统、去重统计等需要唯一性和集合操作的场景,用列表实现任务队列,用集合实现用户兴趣标签的交集查询。