面试:更新数据是先更新mysql数据库,还是先更新redis缓存
来源:6-3 热点数据对象缓存下

qq_慕仰958715
2019-11-14
老师,看了本章讲解的内容,和我之前面试时说的是一样的。
但是面试官给我的回答是,先更新缓存,再更新数据库。
后来我也上网查了下,先更新缓存,再异步将缓存中的数据同步到数据库。
但是我并没有查到相关的代码逻辑。总结两种方式入戏
1:先更新数据库 - 删缓存 - 再次访问 - 查询数据库 - 存入缓存
2:更新redis(新key覆盖旧key) - 查询 - redis异步将数据同步mysql
老师,如果下次面试官再问我,我该什么回答合适呢?
写回答
1回答
-
(1)只要用了缓存,就肯定会有不一致,2个数据源之间事没有事务的,没法保证绝对的一致。
(2)如果想绝对一直,那就别用缓存
(3)如果能接受一定程度上的不一致,可以先更新数据库,再删除缓存。
(4)如果事先更新缓存再更新数据库,如果数据库回滚,缓存怎么处理?这种方式不推荐。如果能接受这种不一致,也可以用。
152020-02-27
相似问题