关于缓存使用的思考

  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种结构;
posted @ 2017-02-13 02:12  mushishi  阅读(122)  评论(0)    收藏  举报