Redis 学习笔记(三):高频命令详解,轻松掌握核心操作
完成 Redis 的安装后,下一步就是掌握与它交互的关键——命令操作。无需死记硬背,结合实际应用场景理解记忆,效率更高、印象更深刻。
本文聚焦于 Redis 四种最常用的数据类型:String、Hash、List 和 Sorted Set。通过生活化类比、典型使用场景以及关键命令演示,帮你快速上手日常开发中高频使用的指令。
一、字符串(String)—— 单值存储的“小格子”
适用场景:适用于缓存用户昵称、验证码、商品库存、访问计数等单一数据项。
可以将 String 想象成桌面上的一个个小格子,每个格子只能存放一个值。它是 Redis 中最基本也是最常使用的数据结构。
常用命令一览
| 命令 |
示例 |
说明 |
| SET |
SET username "Alice" |
设置键值对,若 key 已存在则覆盖原值 |
SET key value
SET user:1001 "奶茶狂热者"
| GET |
GET username |
获取指定 key 对应的值 |
GET key
GET user:1001
| INCR |
INCR page_view |
将对应 key 的数值加 1;若 key 不存在,则初始化为 0 后再 +1 |
INCR key
INCR 奶茶销量
| DECR |
DECR stock |
将数字值减 1 |
DECR key
DECR 库存:iphone
| INCRBY |
INCRBY score 10 |
按指定步长增加数值(如 +10) |
INCRBY key increment
INCRBY 订单数 10
| SETEX |
SETEX token 3600 "abc123" |
设置带过期时间的字符串,单位为秒 |
SETEX key seconds value
SETEX token:abc123 3600 "xxx"
实战建议
INCR 是原子性操作,天然适合高并发环境下的计数需求,例如点赞数、页面浏览量统计。
- 虽然 String 最大支持 512MB 数据存储,但建议仅用于轻量级数据,避免阻塞 Redis 主线程影响性能。
INCR
二、哈希(Hash)—— 结构化对象的“文件夹”
适用场景:适合存储具有多个字段的对象,如用户信息、商品详情或系统配置。
可以把 Hash 看作一个文件袋或文件夹,里面能存放多个“字段-值”对,比如姓名、年龄、邮箱等。相比用多个独立的 String 存储,Hash 更节省内存且结构清晰。
常用命令一览
| 命令 |
示例 |
说明 |
| HSET |
HSET user:1001 name Alice age 28 |
设置一个或多个字段及其值 |
HSET key field value [field value ...]
HSET user:1001 name "奶茶狂热者" age 20 city "杭州"
| HGET |
HGET user:1001 name |
获取某个字段的具体值 |
HGET key field
HGET user:1001 age
| HGETALL |
HGETALL user:1001 |
返回所有字段和对应的值(不推荐用于大对象) |
HGETALL key
HGETALL user:1001
| HMGET |
HMGET user:1001 name age email |
批量获取多个字段的值 |
HMGET key field1 field2 ...
HMGET user:1001 name city
| HDEL |
HDEL user:1001 age |
删除一个或多个字段 |
HDEL key field1 [field2 ...]
HDEL user:1001 age
| HEXISTS |
HEXISTS user:1001 phone |
判断某字段是否存在 |
HEXISTS key field
HEXISTS user:1001 email
实战建议
- Redis 底层会根据字段数量自动切换编码方式(ziplist 或 hashtable),在小对象情况下非常节省内存。
- 避免对大型 Hash 执行
HGETALL,以免造成网络开销过大;可使用 HSCAN 分批读取数据。
HGETALL
HSCAN
三、列表(List)—— 有序的“排队队列”
适用场景:适用于消息队列、最新动态流、任务调度、评论列表等需要顺序处理的数据结构。
List 类似于超市收银台前的排队队伍,支持从两端插入和弹出元素,实现先进先出(FIFO)或后进先出(LIFO)逻辑,是轻量级队列的理想选择。
常用命令一览
| 命令 |
示例 |
说明 |
| LPUSH |
LPUSH tasks "backup_db" |
从左侧(头部)插入元素 |
LPUSH key value [value ...]
LPUSH news:latest "抽到隐藏款啦"
| RPUSH |
RPUSH logs "user_login" |
从右侧(尾部)插入元素 |
RPUSH key value [value ...]
RPUSH task:queue "发送邮件"
| LPOP |
LPOP tasks |
从左边弹出一个元素,常用于消费队列任务 |
LPOP key
LPOP task:queue
| RPOP |
RPOP logs |
从右边弹出元素 |
RPOP key
RPOP log:buffer
| LRANGE |
LRANGE news 0 9 |
获取指定索引范围内的元素(0 表示第一个,-1 表示最后一个) |
LRANGE key start stop
LRANGE news:latest 0 9
| LLEN |
LLEN queue |
获取列表当前长度 |
LLEN key
LLEN news:latest
实战建议
- 使用
LPUSH + RPOP 可构建标准的先进先出队列(FIFO)。
LPUSH + RPOP
采用 LPUSH + LPOP 则形成后进先出栈结构(LIFO)。
LPUSH + LPOP
List 更适合短队列场景,超长列表会影响 Redis 性能,因其基于单线程模型运行。
四、有序集合(Sorted Set / ZSet)—— 带分数排名的“排行榜”
适用场景:适用于积分排行、热门商品 Top N、延迟任务调度、用户活跃度榜单等需按权重排序的业务。
ZSet 中每个成员都关联一个分数(score),Redis 会根据 score 自动排序,支持高效查询排名、范围检索,是实现排行榜功能的最佳选择。
常用命令一览
| 命令 |
示例 |
说明 |
| ZADD |
ZADD leaderboard 1000 "player1" |
添加成员并设置其分数 |
ZADD key score member [score member ...]
ZADD game:scores 999 "小明" 888 "小红"
| ZREVRANGE |
ZREVRANGE leaderboard 0 9 WITHSCORES |
按分数倒序获取前 10 名(含分数) |
ZREVRANGE key start stop [WITHSCORES]
ZREVRANGE game:scores 0 9 WITHSCORES
| ZRANGE |
ZRANGE leaderboard 0 -1 |
正序获取全部成员 |
ZRANGE key start stop [WITHSCORES]
ZRANGE game:scores 0 -1
| ZSCORE |
ZSCORE leaderboard "player2" |
查看某成员当前的分数 |
ZSCORE key member
ZSCORE game:scores "小明"
| ZRANK |
ZRANK leaderboard "player3" |
获取成员在有序集中的正序排名(从 0 开始) |
ZRANK key member
ZRANK game:scores "小明"
| ZREVRANK |
ZREVRANK leaderboard "player1" |
获取成员的逆序排名(最高分排第一,返回 0) |
ZREVRANK key member
ZREVRANK game:scores "小明"
| ZREM |
ZREM blacklist "user_spam" |
删除一个或多个成员 |
ZREM key member [member ...]
ZREM game:scores "小明"
实战建议
ZADD 支持更新已有成员的分数,并自动重新排序。
ZADD
利用 ZRANGEBYSCORE 可进行分数区间查询,例如“找出得分超过 900 的玩家”。
ZRANGEBYSCORE
有序集合底层采用跳表(Skip List)实现,插入、删除和排名查询的时间复杂度均为 O(log N),性能优异。
? 核心命令速查表
| 数据类型 |
写入命令 |
读取命令 |
特色功能 |
典型用途 |
| String |
SET, SETEX |
GET |
INCR, DECR, INCRBY |
缓存、计数器 |
SET
GET
INCR
SETEX
| Hash |
HSET, HMSET |
HGET, HGETALL, HMGET |
HLEN, HEXISTS |
用户资料、对象存储 |
HSET
HGET
HGETALL
HMGET
HDEL
Sorted Set:排行榜与积分系统应用
ZADD
ZREVRANGE
,
ZSCORE
ZRANK
,
ZREM
List 数据结构:适用于消息队列与最新列表场景
LPUSH
/
RPUSH
LPOP
/
RPOP
,
LRANGE
LLEN
用户资料管理与对象存储方案
实践建议
建议在本地的 Redis CLI 环境中亲自执行上述命令,加深理解。
可尝试组合使用不同数据类型:例如利用
String
存储 Token,通过
Hash
保存用户信息,并使用
ZSet
实现点赞排行榜功能。
同时需关注内存占用与系统性能,避免因大 Key 或大 Value 导致服务延迟。
核心要点:掌握关键命令即可,无需贪多;理解实际应用场景后,命令的使用将水到渠成。
后续内容预告
《Redis 学习笔记(四):Redis 隐藏大招曝光!这几个特性香到爆》