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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容