面试:更新数据是先更新mysql数据库,还是先更新redis缓存

来源:6-3 热点数据对象缓存下

qq_慕仰958715

2019-11-14

老师,看了本章讲解的内容,和我之前面试时说的是一样的。
但是面试官给我的回答是,先更新缓存,再更新数据库。
后来我也上网查了下,先更新缓存,再异步将缓存中的数据同步到数据库。
但是我并没有查到相关的代码逻辑。总结两种方式入戏
1:先更新数据库 - 删缓存 - 再次访问 - 查询数据库 - 存入缓存
2:更新redis(新key覆盖旧key) - 查询 - redis异步将数据同步mysql

老师,如果下次面试官再问我,我该什么回答合适呢?

写回答

1回答

若鱼1919

2019-11-15

(1)只要用了缓存,就肯定会有不一致,2个数据源之间事没有事务的,没法保证绝对的一致。

(2)如果想绝对一直,那就别用缓存

(3)如果能接受一定程度上的不一致,可以先更新数据库,再删除缓存。

(4)如果事先更新缓存再更新数据库,如果数据库回滚,缓存怎么处理?这种方式不推荐。如果能接受这种不一致,也可以用。

1
5
若鱼1919
回复
技术面的匹诺曹
允许有误差的数据放缓存 不允许有误差的不放缓存 跟冷热无关。
2020-02-27
共5条回复

Java秒杀系统方案优化 掌握海量访问通用解决方案

各种缓存/JSR303参数检

2695 学习 · 941 问题

查看课程