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


雷达卡


京公网安备 11010802022788号







