← 返回文章列表
数据库·1229 次阅读

Redis 五种基础数据结构与典型用途

Redis 五种基础数据结构与典型用途

Redis 是内存型键值数据库,读速可达十万级 QPS。它真正的威力在于 value 不只是字符串,有五种常用结构。

1. String 字符串

最基础,value 最大 512MB,还能当计数器:

SET user:1:name "Dong"
INCR post:1:views   # 浏览量 +1,原子操作,不存在则从 0 开始
INCRBY score 10
SETNX lock 1        # 不存在才设置,可做简易分布式锁

适合:缓存对象 JSON、计数器、分布式锁、验证码(带过期时间)。

2. Hash 哈希

field-value 的映射,适合存对象,可单独改一个字段:

HSET user:1 name Dong age 26
HINCRBY user:1 age 1
HGET user:1 name

比整个对象 JSON 序列化后再改一个字段高效得多。

3. List 列表

双向链表,两头都能推/弹:

LPUSH timeline "post A"   # 最新动态从头插入
LRANGE timeline 0 9       # 取前 10 条
BRPOP queue 0             # 阻塞式弹出,做简单消息队列

适合:最新列表、简易任务队列。

4. Set 集合

无序、自动去重,支持交并差集:

SADD post:1:tags js vue
SINTER user:1:likes user:2:likes  # 共同点赞
SUNION ...                        # 并集

适合:标签、共同好友、抽奖去重、UV 统计。

5. ZSet 有序集合

每个元素带 score,按 score 排序且不重复:

ZADD rank 100 "Alice" 90 "Bob"
ZINCRBY rank 5 "Bob"
ZREVRANGE rank 0 2 WITHSCORES  # 取前三名

适合:排行榜、延迟队列(score 存执行时间戳)、按权重排序的 feed 流。

选型小结

  • 计数器/缓存 → String
  • 对象、需单字段更新 → Hash
  • 队列/时间线 → List
  • 去重、集合运算 → Set
  • 排序场景 → ZSet

所有结构都能配 EXPIRE 设 TTL。注意 Redis 是内存数据库,要规划好淘汰策略(maxmemory-policy)和持久化(RDB/AOF),否则重启丢数据。

看到这里了?如果这篇文章帮到过你

请我喝瓶可乐就好 🥤

收款码

评论0 条

还没有评论,来抢沙发~

发表评论

评论需审核后显示

© 2026 许冬博客 · 专注 JS 技术分享

·RSS 订阅·Powered by Nuxt 4