首页 新闻 搜索 专区 学院

平时使用spring cache 需要考虑双写不一致问题吗

0
悬赏园豆:10 [待解决问题]

就是使用 @Cacheable 等注解的时候,存在双写不一致问题吗?

我感觉还是存在的。但是 Spring cache 其实已经做了很多的封装, 这个时候,我们怎么处理这个问题?

了解到Cacheable 也有提供相关参数,是不是把它设置为 sync之后就 高枕无忧了呢?

CanntBelieve的主页 CanntBelieve | 初学一级 | 园豆:34
提问于:2021-02-28 10:15
< >
分享
所有回答(1)
1

既然你都考虑使用缓存了,那就得考虑数据不一致性;
框架给你提供了解决方案,你得这种方案的大概实现原理以及最终效果,不然出现问题都不知道从哪里排查;
比如,上面的Cachable中设置了sync为true,那一定就能保证一致性吗?
如果能保证,又是怎么实现的呢?如果中间出现问题,一致性是否还能保证?
如果不能保证一致性,那设置sync又有什么作用呢?在什么情况下会有用?

寻觅beyond | 园豆:873 (小虾三级) | 2021-02-28 15:18

你这个是答案 还是问题?

我其实感觉是 不需要考虑..

支持(0) 反对(0) CanntBelieve | 园豆:34 (初学一级) | 2021-02-28 17:17

@CanntBelieve: 哎,有没有问题,得看你怎么使用啊;
如果你的Cachable用本地缓存(guava cache或者concurrentHashMap),多台机器A、B、C进行本地缓存,即使每台机器都配置了Sync,每个机器单独可以实现一致性,但是A机器和B机器能保证数据一致性吗?能保证有数据更新时一次性全部机器同步吗?
但是如果Cachable使用的redis集群,那么问题可能小一点,通过Cachable进行更新,就没啥问题;如果是直接登录到数据库进行数据更新,那么Cachable的sync也没啥用,因为代码没检测到更新
你自己可以思考一下

支持(0) 反对(1) 寻觅beyond | 园豆:873 (小虾三级) | 2021-02-28 18:25

@寻觅beyond:

想问,你在使用redis + @Cachable 的时候,具体怎么处理数据不一致性的呢?

支持(0) 反对(0) CanntBelieve | 园豆:34 (初学一级) | 2021-02-28 19:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册