正在回答 回答被采纳积分+1
2回答
好帮手慕小班
2021-06-24 16:48:51
同学你好,1、这也属于一种方式,但是实际操作中,一个操作涉及到的表和数据是很多的,直接放到init方法,可能会需要加载很多数据,所以不建议这样做。
2、实际应用中,遇到高并发的问题,还是要根据具体的场景来具体的决定如何处理,比如:更新某商品的库存,先更新了数据库,再更新缓存,造成数据不一致,这时先删除缓存,然后再更新数据库。
在高并发的情况下,如果当删除完缓存的时候,这时去更新数据库,但还没有更新完,另外一个请求来查询数据,发现缓存里没有,这时的数据不一致,可以尝试使用队列去解决。
所以要看具体的场景来灵活决定使用哪种方式来解决。
祝学习愉快~
rock221
2021-06-24 13:51:40
我个人的理解:
一般针对redis 用于缓存数据, 可以在init中, 获取mysql的数据, 存到redis中,因为init只会执行一次,那么就获取到了最初的数据了。 然后高并发请求进入接口口,先对redis中数据进行更改,更改后进入mysql的操作, 如果mysql的操作出现了异常,导致redis的数据-了,mysql没有-, 可以在异常中还原redis的数据,这样就似的两个库存的一致性了。还可以提高运行效率,因为通过redis先进行数据的操作是很快的, 如果库存不满足需求,可以直接对请求返回。 这属于一种解决双写不一致的实际操作吗?
java工程师2020版
- 参与学习 人
- 提交作业 9393 份
- 解答问题 16556 个
综合就业常年第一,编程排行常年霸榜,无需脱产即可学习,北上广深月薪过万 无论你是未就业的学生还是想转行的在职人员,不需要基础,只要你有梦想,想高薪
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星