微信朋友圈(Timeline/Feed流)的底层核心逻辑,本质上是解决数据分发与排序的问题。 在Redis中,无论推模式还是拉模式,最合适的数据结构都是 Sorted Set (ZSET)。因为朋友圈需要严格按时间倒序排列,ZSET的 天然适合存储时间戳, 适合存储动态(Feed)的ID。 注意:Redis的ZSET中只存 Feed ID,不存完整的图文内容。完整的图文内容通常存在 MySQL/HBase 等数据库或 Redis 的 Hash/String Cache 中,通过 Feed ID 去获取。 下面详细说明推模式和拉模式下,Redis 具体应该怎么存、怎么读、怎么写。 --- 一、 推模式(Push Model / 写扩散) 推模式的核心思想是:每个人都有一个“收件箱”(Inbox),当某人发布动态时,系统主动把这条动态的ID,推送(写入)到他所有好友的收件箱里。 1. Redis 数据结构设计 Key: (当前用户的收件箱) Type: Score: (动态发布的时间戳,精确到毫秒) Member: (动态的唯一ID) 2. 工作流程 写操作(发布动态): 1. 用户...