缓存设计的常见陷阱:一致性与雪崩
【摘要】 梳理缓存设计中的四类常见问题:一致性、雪崩、穿透与热点 key,并给出各自的兜底方案。
一、缓存的收益与代价
缓存能显著降低延迟与数据库压力,但引入了新的失败模式:数据不一致、缓存雪崩、缓存穿透、热 key 打爆单节点。设计缓存前要先想清楚这些代价如何兜底。
二、一致性策略
常见的做法是先更新数据库再删除缓存,而不是更新缓存。删除失败时要重试或通过 binlog 异步补偿。对一致性要求高的场景,可以加短过期时间兜底,或者干脆不用缓存。
三、雪崩与穿透
大量 key 同时过期会造成瞬时回源压力,解决办法是给过期时间加随机抖动。缓存穿透是查询不存在的数据,可用空值缓存或布隆过滤器拦截。热点 key 则要考虑本地缓存与多级缓存。
四、容量与淘汰
明确缓存容量上限与淘汰策略(LRU/LFU),监控命中率与内存使用。命中率持续下降说明缓存策略需要调整,而不是简单扩容。
五、可观测性
缓存命中率、平均响应时间、回源 QPS、大 key 与热 key 都要监控。出问题时能快速判断是缓存失效还是回源压力,比事后猜测有用得多。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)