Redis 学习笔记(三):Redis 命令大爆料!记这几个,够用到飞起 🚀

41 阅读5分钟

搞定redis安装之后,接下来就是和 Redis “唠嗑” 的核心 —— 命令
别担心,不用死记硬背,跟着真实场景记,分分钟上手~
本文将围绕 Redis 最常用的四种数据类型(String、Hash、List、Sorted Set),结合生活化比喻 + 实战命令 + 使用场景,带你轻松掌握高频命令!


一、字符串(String):存单个值的 “小抽屉”

适用场景:缓存用户昵称、验证码、商品库存、计数器等单一值。

就像你书桌上的一个小抽屉,一次只能放一件东西。简单直接,是 Redis 中最基础、使用频率最高的数据类型。

🔧 常用命令

命令示例说明
SET key valueSET user:1001 "奶茶狂热者"设置键值对,覆盖已有值
GET keyGET user:1001获取对应 key 的值
INCR keyINCR 奶茶销量将 key 对应的数字值 +1(若不存在则初始化为 0 再 +1)
DECR keyDECR 库存:iphone数字值 -1
INCRBY key incrementINCRBY 订单数 10自定义步长增加(如 +10)
SETEX key seconds valueSETEX token:abc123 3600 "xxx"设置带过期时间的字符串(单位:秒)

💡 实战小贴士

  • INCR 是原子操作,天然支持高并发计数(比如点赞数、访问量)。
  • 字符串最大可存储 512MB,但建议只用于轻量数据,避免阻塞主线程。

二、哈希(Hash):存对象的 “文件袋”

适用场景:存储用户资料、商品详情、配置项等具有多个字段的对象。

想象一个“文件袋”,里面可以装多个“属性-值”对,比如姓名、年龄、地址……一个 key 管理整个对象,比用多个 String 更节省内存、更结构化。

🔧 常用命令

命令示例说明
HSET key field value [field value ...]HSET user:1001 name "奶茶狂热者" age 20 city "杭州"设置一个或多个字段
HGET key fieldHGET user:1001 age获取指定字段的值
HGETALL keyHGETALL user:1001获取所有字段和值(慎用于大对象!)
HMGET key field1 field2 ...HMGET user:1001 name city批量获取多个字段
HDEL key field1 [field2 ...]HDEL user:1001 age删除一个或多个字段
HEXISTS key fieldHEXISTS 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 keyLPOP task:queue从左边弹出一个元素(常用于消费队列)
RPOP keyRPOP log:buffer从右边弹出
LRANGE key start stopLRANGE news:latest 0 9获取索引范围内的元素(0 表示第一个,-1 表示最后一个)
LLEN keyLLEN 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 memberZSCORE game:scores "小明"查看某成员的分数
ZRANK key memberZRANK game:scores "小明"查看正序排名(从 0 开始)
ZREVRANK key memberZREVRANK game:scores "小明"查看倒序排名(第一名返回 0)
ZREM key member [member ...]ZREM game:scores "小明"删除成员

💡 实战小贴士

  • ZADD 支持更新已有成员的分数(自动重排)。
  • 使用 ZRANGEBYSCORE 可按分数范围查询,比如“找出 900 分以上的玩家”。
  • 有序集合底层使用 跳表(Skip List),插入、删除、查排名都是 O(log N),效率极高!

✅ 总结:一张表速记核心命令

数据类型特色命令典型场景
StringSETGETINCR, SETEX缓存、计数器
HashHSETHGET, HGETALLHMGET, HDEL用户资料、对象存储
ListLPUSH / RPUSHLPOP / RPOP, LRANGELLEN消息队列、最新列表
Sorted SetZADDZREVRANGE, ZSCOREZRANK, ZREM排行榜、积分系统

🎯 下一步建议

  • 动手在本地 Redis CLI 中敲一遍这些命令!
  • 尝试组合使用:比如用 String 存 Token,用 Hash 存用户信息,用 ZSet 做点赞排行榜。
  • 关注内存使用和性能,避免大 Key、大 Value 拖慢系统。

记住:命令不在多,而在精;场景懂了,命令自然就熟了!


下期预告:《Redis 学习笔记(四):Redis 隐藏大招曝光!这几个特性香到爆 》 敬请期待!🎉 ps:如果有错,请私信,我会改正,因为我也是在学习中


✍️ 作者:勤劳小鹿
📅 更新时间:2025年11月26日
🌐 原创内容,转载请注明出处