本篇帮助你学习到Redis 常见数据类型和应用场景前言我们都知道Redis是一个Key → Value结构的数据库Redis 和传统数据库最大的区别是数据存在内存里这使得他读取的速度非常快。问题来了如果 Redis 只是 Key-Value会发生什么假设 Redis 只有最简单结构key → value那 value 只能是一个字符串。比如存用户信息user:1 → “Tom,20,Beijing”问题马上出现如果我只想修改 年龄20 → 21你必须1 取出整个字符串2 解析3 修改4 再写回这非常麻烦。于是 Redis 做了一件非常聪明的事情直接提供多种数据结构让你更自然地存数据。Redis 不只是数据库它更像一个高性能数据结构服务器Redis 数据类型整体结构StringHashListSetSorted Set (ZSet)数据结构像什么String一个值Hash一个对象List一个队列Set一个不重复集合ZSet一个带排名的集合String最基础的数据类型在Redis中String不仅仅可以存储字符串。Redis 的 String 可以存字符串数字JSON二进制应用场景 1缓存例如user:1001 → JSON用户信息流程请求用户信息↓先查 Redis↓Redis 有 → 直接返回Redis 没有 → 查数据库这样数据库压力会小很多。应用场景 2计数器Redis 的 String 支持一个非常强大的操作INCR意思是数字 1例如统计文章阅读量article100:view → 100用户访问一次INCR article100:view阅读量自动增加。常见用途点赞数 阅读量 库存 访问量Hash用来存对象如果要存 结构化数据String 就不够方便了。比如用户对象idnameagecityRedis 提供Hash结构像这样key → field → value例子user:1001name → Aliceage → 20city → Shanghai你可以把 Hash 理解为一个对象Hash 的优势如果用户年龄更新20 → 21只需要修改一个字段HSET user:1001 age 21不需要更新整个对象。Hash 常见场景非常适合存用户信息 商品信息 订单信息因为它们本质上都是一个对象 多个属性List有顺序的列表List 的本质是一个有序队列例如[消息1, 消息2, 消息3]Redis 支持两端操作LPUSH 左边插入 RPUSH 右边插入所以它可以模拟队列应用场景 1消息队列生产者LPUSH queue message消费者RPOP queue流程生产者 → Redis List → 消费者这种方式常用于简单系统的任务队列。应用场景 2最新列表例如最新文章 最新评论新数据LPUSH读取LRANGESet不重复集合Set 的特点非常简单元素不会重复例如{1,2,3,4}如果你插入SADD set 3结果仍然是{1,2,3,4}Set 的应用用户去重例如统计今天访问网站的用户操作SADD visit:20250308 user1SADD visit:20250308 user2Redis 自动去重。共同好友Redis 支持集合运算交集并集差集例如A 的好友B 的好友求共同好友ZSet带排名的集合ZSetSorted Set是 Redis 非常强大的结构。结构value score例如Alice 100Bob 80Tom 120Redis 会按 score 自动排序Tom 120Alice 100Bob 80最经典应用排行榜例如游戏排行榜玩家A 1500玩家B 2000玩家C 1800存入ZADD rank 1500 playerA ZADD rank 2000 playerB查询ZRANGE rank即可得到排行榜。常见用途游戏排行榜热搜榜点赞排行积分榜总结本篇讲述了Redis中的五种常见数据类型StringHashListsetZset。具体区分见下表。数据结构本质典型场景String单值缓存、计数器Hash对象用户信息List队列消息队列Set去重集合用户集合ZSet排序集合排行榜