就是使用 @Cacheable 等注解的时候,存在双写不一致问题吗?
我感觉还是存在的。但是 Spring cache 其实已经做了很多的封装, 这个时候,我们怎么处理这个问题?
了解到Cacheable 也有提供相关参数,是不是把它设置为 sync之后就 高枕无忧了呢?
既然你都考虑使用缓存了,那就得考虑数据不一致性;
框架给你提供了解决方案,你得这种方案的大概实现原理以及最终效果,不然出现问题都不知道从哪里排查;
比如,上面的Cachable中设置了sync为true,那一定就能保证一致性吗?
如果能保证,又是怎么实现的呢?如果中间出现问题,一致性是否还能保证?
如果不能保证一致性,那设置sync又有什么作用呢?在什么情况下会有用?
你这个是答案 还是问题?
我其实感觉是 不需要考虑..
@CanntBelieve: 哎,有没有问题,得看你怎么使用啊;
如果你的Cachable用本地缓存(guava cache或者concurrentHashMap),多台机器A、B、C进行本地缓存,即使每台机器都配置了Sync,每个机器单独可以实现一致性,但是A机器和B机器能保证数据一致性吗?能保证有数据更新时一次性全部机器同步吗?
但是如果Cachable使用的redis集群,那么问题可能小一点,通过Cachable进行更新,就没啥问题;如果是直接登录到数据库进行数据更新,那么Cachable的sync也没啥用,因为代码没检测到更新
你自己可以思考一下
@寻觅beyond:
想问,你在使用redis + @Cachable 的时候,具体怎么处理数据不一致性的呢?