缓存设计
缓存的收益和成本
应用场景: 开销大的复杂计算, 加速请求响应
使用功能尽可能回归本源——读缓存
缓存更新策略
过期更新
主动更新
穿透优化
指查询一个根本不存在的数据, 缓存层和存储层都不会命中
解决方式:
1)缓存空对象, 并对空对象设置一个较短的过期时间, 等到过期时间快到时,尝试只让其中一个请求查询存储层, 如果还是没, 重新设置缓存时间
或者主动更新: 利用消息推送,当有新数据时,清空对应的空缓存
无底洞优化
更多节点不代表更高性能, 增加的节点对或网络请求过多, 或某个节点过度被请求等增加节点解决不了问题的情况.
解决方式:
部分数据缓存在内存
减少网络请求方式: 把多个命令合并成一个,如redis的mget
雪崩
同一时刻, 有大量请求,缓存层宕掉, 导致存储层高并发
解决方式:
控制流量
节点冗余
热点key重建优化
热点key访问量巨大,缓存过期期间,重建缓存可能时间比较长,会有大量重建缓存请求,造成存储层压力过大
解决方式:
数据缓存在内存
评论