Redis 五大基础数据结构与应用场景
深入理解 Redis 的 String、List、Hash、Set、ZSet 五大数据结构,掌握每种结构的应用场景。
Redis 五大基础数据结构与应用场景 Redis 不仅是缓存,更是数据结构服务器。选对数据结构,能让业务代码事半功倍。 一、String(字符串) 最基础的数据结构,可存储字符串、数字、序列化对象。 底层实现 :SDS(Simple Dynamic String) 应用场景 : 缓存对象(JSON 序列化) 计数器: / 分布式锁: 限流: + 过期时间 二、List(列表) 双向链表,支持从两端插入/弹出。 底层实现 :QuickList(ziplist + linkedlist 的结合) 应用场景 : 消息队列: + 文章列表:分页查询 最新动态:朋友圈、微博时间线 三、Hash(哈希) 键值对集合,适合存储对象。 底层实现 :ziplist(小) / hashtable(大) 应用场景 : 对象存储(比 String + JSON 更高效) 购物车: 配置中心 四、Set(集合) 无序、不重复元素集合。 底层实现 :intset / hashtable 应用场景 : 标签系统 共同关注、共同好友 抽奖: / UV 统计(去重) 五、ZSet(有序集合) 每个元素带 score,按 score 排序。 底层实现 :ziplist / skiplist + hashtable 应用场景 : 排行榜(最经典) 延迟队列:score 为执行时间 热搜榜单 带权重的消息 六、特殊数据结构 除了五大基础结构,Redis 还提供: | 结构 | 特点 | 场景 | | | | | | Bitmap | 位操作 | 签到、活跃统计 | | HyperLogLog | 去重统计(误差 0.81%) | UV 统计 | | Geo | 地理位置 | 附近的人、商家 | | Stream | 持久化消息队列 | 替代 MQ | 签到系统(Bitmap) UV 统计(HyperLogLog) 七、选型对比 | 需求 | 推荐 | 原因 | | | | | | 简单缓存 | String | 简单直接 | | 对象存储 | Hash | 字段独立读写 | | 排序 | ZSet | 内置排序 | | 去重 | Set / HyperLogLog | Set 精确,HLL 省内存 | | 队列 | List / Stream | Stream 支持持久化 | | 位运算 | Bitmap | 签到场景必备 | 八、小结 Redis 数据结构的设计哲学: 为每个场景提供最合适的数据结构 ,避免在业务层做不必要的处理。 记住小宇宙的话: 选择正确的数据结构,比写出更优雅的代码更重要 。