直接回答
确定缓存容量的核心原则是:以目标命中率为导向,用数据说话。先估算工作集大小(热点数据总量 × 单条大小),保证缓存能装下绝大部分热数据,再预留突发和对象开销的余量;上线后按命中率、淘汰率、内存使用率持续校准,而非拍脑袋定数。
展开解析
推导路径:估算条目数(如 1000 万用户中 20% 活跃,缓存其会话与画像)× 单条序列化后大小(实测而非猜测,Redis 等还有 key、指针等每条约几十字节开销),得出基础容量,再乘安全系数(常见 1.5–2 倍)容纳增长和碎片。其他约束:容量不能大到拖慢故障转移和持久化;超过工作集继续加内存收益递减,应转而优化 TTL 和结构。策略与容量互相影响:LRU/LFU 的选择、合理 TTL、热点 key 拆分、大 value 压缩都能用更小容量达到同等命中率;监控 evictions——大量淘汰说明容量不足或 key 设计有问题。极端预案(空值缓存/布隆过滤器防穿透、TTL 加抖动防雪崩)比单纯堆容量更有效。追问:多级缓存各自怎么定容、如何评估扩容收益。