搞定redis安装之后,接下来就是和 Redis “唠嗑” 的核心 —— 命令!
别担心,不用死记硬背,跟着真实场景记,分分钟上手~
本文将围绕 Redis 最常用的四种数据类型(String、Hash、List、Sorted Set),结合生活化比喻 + 实战命令 + 使用场景,带你轻松掌握高频命令!
一、字符串(String):存单个值的 “小抽屉”
适用场景:缓存用户昵称、验证码、商品库存、计数器等单一值。
就像你书桌上的一个小抽屉,一次只能放一件东西。简单直接,是 Redis 中最基础、使用频率最高的数据类型。
🔧 常用命令
| 命令 | 示例 | 说明 |
|---|---|---|
SET key value | SET user:1001 "奶茶狂热者" | 设置键值对,覆盖已有值 |
GET key | GET user:1001 | 获取对应 key 的值 |
INCR key | INCR 奶茶销量 | 将 key 对应的数字值 +1(若不存在则初始化为 0 再 +1) |
DECR key | DECR 库存:iphone | 数字值 -1 |
INCRBY key increment | INCRBY 订单数 10 | 自定义步长增加(如 +10) |
SETEX key seconds value | SETEX token:abc123 3600 "xxx" | 设置带过期时间的字符串(单位:秒) |
💡 实战小贴士
INCR是原子操作,天然支持高并发计数(比如点赞数、访问量)。- 字符串最大可存储 512MB,但建议只用于轻量数据,避免阻塞主线程。
二、哈希(Hash):存对象的 “文件袋”
适用场景:存储用户资料、商品详情、配置项等具有多个字段的对象。
想象一个“文件袋”,里面可以装多个“属性-值”对,比如姓名、年龄、地址……一个 key 管理整个对象,比用多个 String 更节省内存、更结构化。
🔧 常用命令
| 命令 | 示例 | 说明 |
|---|---|---|
HSET key field value [field value ...] | HSET user:1001 name "奶茶狂热者" age 20 city "杭州" | 设置一个或多个字段 |
HGET key field | HGET user:1001 age | 获取指定字段的值 |
HGETALL key | HGETALL user:1001 | 获取所有字段和值(慎用于大对象!) |
HMGET key field1 field2 ... | HMGET user:1001 name city | 批量获取多个字段 |
HDEL key field1 [field2 ...] | HDEL user:1001 age | 删除一个或多个字段 |
HEXISTS key field | HEXISTS user:1001 email | 判断字段是否存在 |
💡 实战小贴士
- Hash 在底层会根据字段数量自动切换编码(ziplist / hashtable),小对象非常省内存。
- 避免对大 Hash 执行
HGETALL,可用HSCAN分批遍历。
三、列表(List):有序的 “排队队伍”
适用场景:消息队列、最新动态列表、任务队列、评论流等需要顺序处理的数据。
就像超市结账的队伍:先进先出(FIFO)或后进先出(LIFO)都行,支持从两端插入/弹出,非常适合做轻量级队列。
🔧 常用命令
| 命令 | 示例 | 说明 |
|---|---|---|
LPUSH key value [value ...] | LPUSH news:latest "抽到隐藏款啦" | 从左边插入(队首) |
RPUSH key value [value ...] | RPUSH task:queue "发送邮件" | 从右边插入(队尾) |
LPOP key | LPOP task:queue | 从左边弹出一个元素(常用于消费队列) |
RPOP key | RPOP log:buffer | 从右边弹出 |
LRANGE key start stop | LRANGE news:latest 0 9 | 获取索引范围内的元素(0 表示第一个,-1 表示最后一个) |
LLEN key | LLEN news:latest | 获取列表长度 |
💡 实战小贴士
LPUSH + RPOP= 先进先出队列(FIFO)LPUSH + LPOP= 栈(LIFO)- 列表适合短队列,超长列表会影响性能(Redis 是单线程的!)
四、有序集合(Sorted Set / ZSet):带排名的 “光荣榜”
适用场景:排行榜、积分系统、延迟任务、热门商品 Top N 等需要按分数排序的场景。
每个成员(member)都有一个分数(score),Redis 会自动按 score 排序,支持快速查排名、范围查询,简直是排行榜的天选之子!
🔧 常用命令
| 命令 | 示例 | 说明 |
|---|---|---|
ZADD key score member [score member ...] | ZADD game:scores 999 "小明" 888 "小红" | 添加成员并指定分数 |
ZREVRANGE key start stop [WITHSCORES] | ZREVRANGE game:scores 0 9 WITHSCORES | 倒序获取排名前 10(含分数) |
ZRANGE key start stop [WITHSCORES] | ZRANGE game:scores 0 -1 | 正序获取全部成员 |
ZSCORE key member | ZSCORE game:scores "小明" | 查看某成员的分数 |
ZRANK key member | ZRANK game:scores "小明" | 查看正序排名(从 0 开始) |
ZREVRANK key member | ZREVRANK game:scores "小明" | 查看倒序排名(第一名返回 0) |
ZREM key member [member ...] | ZREM game:scores "小明" | 删除成员 |
💡 实战小贴士
ZADD支持更新已有成员的分数(自动重排)。- 使用
ZRANGEBYSCORE可按分数范围查询,比如“找出 900 分以上的玩家”。 - 有序集合底层使用 跳表(Skip List),插入、删除、查排名都是 O(log N),效率极高!
✅ 总结:一张表速记核心命令
| 数据类型 | 存 | 取 | 特色命令 | 典型场景 |
|---|---|---|---|---|
| String | SET | GET | INCR, SETEX | 缓存、计数器 |
| Hash | HSET | HGET, HGETALL | HMGET, HDEL | 用户资料、对象存储 |
| List | LPUSH / RPUSH | LPOP / RPOP, LRANGE | LLEN | 消息队列、最新列表 |
| Sorted Set | ZADD | ZREVRANGE, ZSCORE | ZRANK, ZREM | 排行榜、积分系统 |
🎯 下一步建议
- 动手在本地 Redis CLI 中敲一遍这些命令!
- 尝试组合使用:比如用
String存 Token,用Hash存用户信息,用ZSet做点赞排行榜。 - 关注内存使用和性能,避免大 Key、大 Value 拖慢系统。
记住:命令不在多,而在精;场景懂了,命令自然就熟了!
下期预告:《Redis 学习笔记(四):Redis 隐藏大招曝光!这几个特性香到爆 》 敬请期待!🎉 ps:如果有错,请私信,我会改正,因为我也是在学习中
✍️ 作者:勤劳小鹿
📅 更新时间:2025年11月26日
🌐 原创内容,转载请注明出处