全书目录

第九篇:Redis 完全指南 —— 软件城市实时调度中心宇宙

第六章:Hash / List / Set / Sorted Set —— Redis 真正像“调度中心”的地方

1 分钟 291 字 第 209 / 962 个阅读单元

Redis 真正有辨识度,不在于 GET/SET,而在于它把常见业务结构做成了原生命令。

#1. Hash —— 一张业务档案卡

Hash 很适合表示“小对象”。

bash
HSET user:1001 name "Ada" role "admin" city "Shanghai"
HGET user:1001 name
HGETALL user:1001

类比:

text
Hash = 柜台上的一张档案卡
字段很多,但都属于同一个对象

适合:

  • 用户资料
  • 商品概要信息
  • 订单头信息
  • Session 小对象
#2. List —— 一条排队传送带
bash
LPUSH queue:email "task-1"
LPUSH queue:email "task-2"
RPOP queue:email

或者做阻塞消费:

bash
BLPOP queue:email 0

类比:

text
List = 调度中心里的一条传送带
任务一个个压进去,再一个个取出来

适合:

  • 简单队列
  • 最近操作列表
  • 时间顺序消息
#3. Set —— 去重登记簿
bash
SADD online:room:88 "user:1001"
SADD online:room:88 "user:1002"
SMEMBERS online:room:88
SISMEMBER online:room:88 "user:1001"
SREM online:room:88 "user:1002"

类比:

text
Set = 一个不允许重复登记的名单册

适合:

  • 在线用户集合
  • 标签集合
  • 去重记录
  • 关注关系的一部分建模
#4. Sorted Set —— 带分数的排名大屏
bash
ZADD leaderboard:game:2026 980 "user:1001"
ZADD leaderboard:game:2026 1200 "user:1002"
ZRANGE leaderboard:game:2026 0 -1 WITHSCORES
ZREVRANGE leaderboard:game:2026 0 9 WITHSCORES

类比:

text
Sorted Set = 一块按分数自动排序的大屏

适合:

  • 排行榜
  • 优先级队列
  • 按时间分数排序的集合
  • 二级索引的一部分模式