背景
缓存中数据更新一般有两个入口,
- 数据缓存过期,数据在访问时发现缓存中无数据时重新查库然后更新至缓存;
- 场景和问题等同于缓存查询,相关solution参考“缓存数据查询的注意事项”;
- 缓存未过期,数据库数据有变动主动更新至缓存;
- 比较常见的场景;
- 也即为双写的概念:有新版本的数据需要同时写入持久化层和缓存层中;
问题点
数据一致性
- 是指数据库持久化数据与高速缓存库中缓存数据的不一致;
- 一般倾向于数据库为准,也就是说不一致是指缓存数据的时效性保障性低于持久化数据;
- 不一致也即为缓存数据为脏数据;
脏数据的概念
- 缓存的更新过程可能会出现时间上或长或短的时效性过期情况(或者说无法避免);
- 长期或者在缓存单位生命周期中是脏数据的情况是无法接受的;
- 但是如果在实现级出现短暂的脏数据,通过兜底或者其他策略完整最终一致性是解决方向;
缓存的过期时间
- 常见缓存过期时间的处理策略是
- 设置指定的过期时间:经过过期时间之后在数据查询过程中绑定缓存初始化的流程实现更新;
- 不设置过期时间:长期有效,只有主动发起才会执行缓存的数据更新;
- 关于数据一致性
- 上述的设置过期时间的策