中间件速查手册
缓存与 KV 存储Data Structures

Redis 数据结构 是什么?

String/Hash/List/Set/ZSet,选对结构比写对命令更重要

类比:工具箱,拧螺丝别用锤子

五种基础结构

先想清楚「我要回答什么问题」,再选结构。

  • String:缓存对象、计数器(INCR)、分布式锁
  • Hash:存对象的多个字段,可单独更新(购物车)
  • List:消息队列、最新列表(LPUSH + LRANGE)
  • Set:去重、共同好友(SINTER)、抽奖(SRANDMEMBER)
  • ZSet:排行榜、延时队列(score 存时间戳)

进阶结构

Bitmap 做签到和布隆过滤器;HyperLogLog 做 UV 统计(误差 0.81%,12KB 顶千万级);GEO 做附近的人;Stream 做带消费组的消息队列。

大 key 与热 key

大 key(单个 value 几 MB、集合几十万元素)会让删除、迁移、持久化都变慢,甚至阻塞主线程;热 key(单个 key 每秒几十万请求)会打满单个分片。

  • 大 key 拆分:Hash 按字段分片,List 按段拆多个 key
  • 热 key:本地缓存 + 多副本 key 打散
  • 用 redis-cli --bigkeys 定期体检

它出现在这些中间件里

相关概念