管理用户缓存(User Cache)是提升系统性能、降低数据库压力、改善用户体验的关键手段。但缓存如果用不好,会引发数据不一致、缓存击穿/雪崩/穿透、内存溢出等问题。
下面从架构选型 → 缓存策略 → 常见问题与应对 → 最佳实践四个维度系统讲一下。
常见用户相关缓存内容:
✅ 常见方案:本地缓存 + Redis 二级缓存
为什么删而不是改?
避免并发下“改了旧值”导致脏数据
user:{userId}:info
user:{userId}:perm
user:{userId}:session
✅ 统一前缀,方便清理和监控
现象:频繁查 DB 中不存在的 ID
✅ 解决:
现象:某大 V 缓存失效,瞬间打爆 DB
✅ 解决:
现象:批量用户缓存同一时间过期
✅ 解决:
✅ 原则:
✅ 登录态用 Redis + 固定 TTL
✅ 用户信息用 Cache Aside
✅ 权限变更强制清缓存
✅ 提供“清缓存”管理接口(运营/运维)
✅ 监控命中率、内存、慢查询
User getUser(Long id) {
User u = redis.get("user:" + id);
if (u != null) return u;
u = db.query(id);
redis.set("user:" + id, u, 30min);
return u;
}
void updateUser(User u) {
db.update(u);
redis.delete("user:" + u.id);
}
如果你愿意,我可以:
你现在的用户量和架构大概是什么样?