redis数据一致性解决方案 - JiyangM/spring GitHub Wiki

一致性问题是分布式常见问题,还可以再分为最终一致性和强一致性。数据库和缓存双写,就必然会存在不一致的问题。答这个问题,先明白一个前提。就是如果对数据有强一致性要求,不能放缓存。我们所做的一切,只能保证最终一致性。另外,我们所做的方案其实从根本上来说,只能说降低不一致发生的概率,无法完全避免。因此,有强一致性要求的数据,不能放缓存。

方案一:

spring-data-redis 配合Spring的缓存注解 @Cacheable @CachePut @CacheEvict,数据更新后调用接口方法进行缓存的异步更新操作。

方案二:

CacheDao 定义DataChangeObserver观察者用于清除缓存,当某些数据进行更新操作的时候,添加一个观察者实例。