尝试着总结一下数据库和缓存数据一致性的问题
会造成旧值存在缓存中,这种操作的概率应该很低,毕竟读比写快很多,t4应该很难发生在t3之前
由于操作数据库和缓存不是原子操作,那么可能会造成缓存中的值还存在,就是以后读到旧值
我们的账户余额,发生过并发读写造成了新的余额并没有写到缓存中(缓存的值比数据库的值大很多,而且缓存时间也设的比较长).
然后后续没有写操作,就是读这个余额进行业务操作(撮合放款),到最后实际放款,用户就是钱不够,业务失败.
结合自身的业务情况,我们觉得缓存出错不能接受,而且也不会发生说t2时刻有成千上万的并发发生,所以我们用了这种方案。
First private blog, take a note.