73.秒杀缓存如何与数据库的数据保持一致性: 先更新数据库,后删除缓存(推荐) 1可能出现的问题 更新数据库成功了,但是在删除缓存的阶段没有成功,则之后读取的缓存都是错误的 2解决方式一:异步实现之利用消息队列 请求A向服务端发送修改商品请求 相应的模块根据请求会对数据库对应内容进行更新,更新成功后会向MQ发送消息 该消息通知缓存处理模块删除对应的缓存 缓存模块监听到有新的消息,会执行缓存删除逻辑 利用消息队列的手动提交机制可以保证删除逻辑顺利完成 3 解决方式二:基于Canal的通知 商品服务完成数据库修改操作后,业务直接结束。没有任何代码侵入 Canal监听mysql变化,当发现变化后,立即通知缓存服务 缓存服务接收到canal通知,删除缓存。