首页/数据/NoSQL 速查/Redis 常用数据结构与场景对照
选型与架构50 条

Redis 常用数据结构与场景对照

Redis 的价值在于按访问模式挑结构:string 做缓存与计数、hash 存对象字段、list 当队列、set 去重、zset 做排行、bitmap 记签到、HyperLogLog 估基数、stream 做消息流。结构选错会增加内存与实现复杂度。

NoSQL 速查数据更新于 2026-10-12

各结构示例

各结构示例
INCR page:view:20261012
HSET user:7 name ann age 30
LPUSH queue:jobs a b c
SADD tags:1 db cache
ZADD rank 120 u1 95 u2
SETBIT sign:7 11 1
PFADD uv:20261012 u1 u2
XADD stream:orders * item apple qty 2

结构取舍

结构典型用途注意点
string缓存、计数器、分布式锁整值读写,大 value 影响网络与内存
hash对象字段级读写字段很多大时避免整个 HGETALL
list轻量队列、最新列表LINSERT/LREM 为线性操作
zset排行榜、延时队列成员与分值双存储,内存开销较高
bitmap签到、活跃标记按位寻址,稀疏大偏移会浪费内存
HyperLogLogUV 基数估计固定小体积、存在标准误差
stream消息流与消费组需要处理未确认消息(PEL)
小集合(如小 hash、小 zset)在元素少时会用紧凑编码(listpack)省内存,超过阈值后转为完整结构;阈值可在配置中查看与调整。

易错点

  • 用 set 存全量 UV 在大流量下内存增长快,只做基数估计时 HyperLogLog 更合适
  • zset 与 stream 的内存成本高于 string,量级大时先用 MEMORY USAGE 抽样评估

数据来源与参考

  • Redis Docs: Data types
  • Redis Docs: Memory optimization
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌