关于使用分布式缓存的思考

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种结构;

你可能感兴趣的:(关于使用分布式缓存的思考)