强一致性比较难,比如用分布式锁。分布式事务,那么开销就会很大,吞吐量比较低,很难实现。
看下面两种情况:
第一种:先更新数据库,在更新缓存
有可能数据库更新成功,缓存没有更新成功,那么缓存里面就是一些脏数据;
第二种:先更新缓存,再更新数据库
缓存更新成功了,数据库更新失败,那么数据库中的数据都没有持久化下来。
主要这些数据库和缓存的操作是没有原子的,那么追求高可用,要达到最终一致性;
在有更新操作时,首先更新数据库,并把缓存delete掉;
强一致性比较难,比如用分布式锁。分布式事务,那么开销就会很大,吞吐量比较低,很难实现。
看下面两种情况:
第一种:先更新数据库,在更新缓存
有可能数据库更新成功,缓存没有更新成功,那么缓存里面就是一些脏数据;
第二种:先更新缓存,再更新数据库
缓存更新成功了,数据库更新失败,那么数据库中的数据都没有持久化下来。
主要这些数据库和缓存的操作是没有原子的,那么追求高可用,要达到最终一致性;
在有更新操作时,首先更新数据库,并把缓存delete掉;