1. 何时用缓存? 加快数据返回 减轻db压力
- 读操作远大于写操作
- 依赖外部接口数据,但是其access能力差
- 原始db数据需要经过复杂计算、耗时整理后才可使用
2. 缓存是低可靠性的
3. 注意点
- 防雪崩: 所有key的超时时间增加随机尾数
- 防穿透:拉模式获取为空时,塞入默认空值
4. 更新策略
- 考虑并发场景,线程直接写还是消息队列单写
- 推模式
- 拉模式
- 推拉结合
5. shadowdb:cache -> shadowdb, 讲shadowdb作为拉模式的数据源而不是原始数据源;缓存数据计算代价太大,采用job主动更新cache和shadowdb,不做拉操作
6. 缓存数据源结构变化
- 在原有缓存key上增减字段: 调整值的结构时需要注意已处于缓存的值和新值结构的兼容性;如 在product_1 产品key上新增一个vendor信息, 已缓存的信息上没有这个值的,会导致产品product_1在线上环境vendor为空,只能等待缓存过期或者下次push操作后才能获取到正确的值
- 整个结构的变化: 这种就具有很大的破坏性了;如果key值不重新定义的话,不管怎么清理,线上缓存肯定有2种结构;
网友评论