缓存设计

发布于: 2020 年 07 月 08 日

缓存的收益和成本

  • 应用场景: 开销大的复杂计算, 加速请求响应

  • 使用功能尽可能回归本源——读缓存

缓存更新策略

  • 过期更新

  • 主动更新

穿透优化

指查询一个根本不存在的数据, 缓存层和存储层都不会命中

解决方式:

1)缓存空对象, 并对空对象设置一个较短的过期时间, 等到过期时间快到时,尝试只让其中一个请求查询存储层, 如果还是没, 重新设置缓存时间

或者主动更新: 利用消息推送,当有新数据时,清空对应的空缓存

无底洞优化

更多节点不代表更高性能, 增加的节点对或网络请求过多, 或某个节点过度被请求等增加节点解决不了问题的情况.

解决方式:

  • 部分数据缓存在内存

  • 减少网络请求方式: 把多个命令合并成一个,如redis的mget

雪崩

同一时刻, 有大量请求,缓存层宕掉, 导致存储层高并发

解决方式:

  • 控制流量

  • 节点冗余

热点key重建优化

热点key访问量巨大,缓存过期期间,重建缓存可能时间比较长,会有大量重建缓存请求,造成存储层压力过大

解决方式:

  • 数据缓存在内存

用户头像

GalaxyCreater

关注

还未添加个人签名 2019.04.21 加入

还未添加个人简介

评论

发布
暂无评论
缓存设计