uu们知道redis和mysql怎么保证强一致性吗,我说了一个延时双删一个binlog,面试官说不能保证。然后给我解释了一下应该怎样保证,但有点紧张没听懂。
全部评论
延时双删和binlog是保证最终一致性,强一致性就用分布式事务吧
强一致性确实没法吧,最简单想的就是2PC的方式,把Redis和MySQL都当做参与者,后端当做协调者,两阶段都提交完,再返回。现实中没人会想这么干吧,毕竟Redis是当缓存的
写完数据库,对对应的缓存加锁,这个时候缓存不能被读,然后更新完缓存了再释放锁。
延迟双删也不能保证强一致性,延迟时间控制不对或者此时有三个以上线程就很可能造成数据不一致,,binlog是允许有一定时延,可保证最终一致性,,想要强一致,就要降低性能,就是上锁,用读写锁--菜鸟的看法
强一致性一般都是使用事务吧
redis和MySQL的同步策略里有写穿写回和旁路缓存,写穿的概念就是强一致吧
使用redission提供的读写锁吧配合旁路缓存模式
接好运
m
这么简单,一把互斥锁解决了。如果问你分布式怎么解决,那就走分布式事务那一套。
这算是分布式事务了,分布式事务怎么做到强一致性?一般都是最终一致性吧?
m
mark
甄汇?
相关推荐
03-26 11:03
门头沟学院 Java 点赞 评论 收藏
分享
04-07 20:46
宁夏大学 Java 点赞 评论 收藏
分享