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)是无序且不重复的元素集合,支持集合运算(如并集、交集),适用于标签系统、去重统计等需要唯一性和集合操作的场景,用列表实现任务队列,用集合实现用户兴趣标签的交集查询。
文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/402699.html<
