处理系统中海量红点(未读消息)的存储与统计,是一个典型的高并发、大数据量的业务场景。其核心挑战在于:写入频繁(消息推送)、读取极高频(每次打开APP/页面都要查)、数据量大(用户数 $\times$ 业务维度)。 以下是针对不同业务场景和量级的高效存储与统计方案,按从简单到复杂的演进路线进行分析: --- 一、 核心设计原则 1. 读写分离与异步化:红点产生(写)通常由消息触发,统计(读)由用户行为触发。 2. 冷热分离:活跃用户的红点数据在缓存(Redis),不活跃用户下沉到数据库或归档。 3. 全量与增量:客户端本地缓存未读数,服务端只推增量变化或仅在初始化时拉取全量。 --- 二、 方案选型与数据结构 方案 1:纯 Redis Hash 计数法(适用于大多数中大型系统) 这是最通用且性能最好的方案。利用 Redis 的 结构,以用户 ID 为 Key,业务类型(或会话 ID)为 Field,未读数为 Value。 Redis Key 设计: Hash 结构: 操作流程: 新增消息:,同时更新 。 读取红点:(获取该用户所有维度的红点)。 消除红点:(或直接 ),同时扣减 。...