解决缓存与数据库一致性问题
2017-02-21 11:18
435 查看
1、引用缓存的好处
1)提高性能;2)减缓数据库压力;3)提高系统并发处理能力2、引用缓存的问题
1)处理逻辑变得复杂;2)使用不当,容易引起缓存和数据库数据不一致的问题3、数据不一致的原因
缓存操作与数据库操作不是原子操作,当一方操作成功、另一方操作失败时就会造成数据不一致问题4、不同情况下常用处理方法
1)简单逻辑处理:与数据库简单的一次性交互,可根据数据库/缓存的操作结果,来判断缓存/数据库是否要执行相应操作,如图:a、增:db-->cache:数据库插入成功,添加到缓存
b、删:cache-->db:先删缓存,在删数据库
c、改:db-->cache:先改数据库,在改缓存
d、查:cache-->db-->cache:先查缓存,没有则查库添加到缓存
2)复杂逻辑处理:一个service中有多次数据库交互,并且由于spring事务传播性不同有时只在最外层事务提交时提交(spring默认事务传播性)
a、增:db:只插入数据库
b、删:cache-->db:先删缓存,再删数据库
c、改:cache-->db:先删缓存,再删数据库
d、查:cache-->db-->cache:先查缓存,没有则查库添加到缓存
注:
1)还可以通过设置标志位,在外层回滚缓存的做法,由于该方法会使缓存操作与业务操作耦合性过大,此处不做介绍;
2)如上操作cache与db的理由,未详细解释,如有需要可回复评论探讨;
3)该篇博文主要用于讨论解决数据库与缓存不一致问题,对于高并发下造成的线程安全问题,后续讨论。。。
相关文章推荐
- 数据库和缓存一致性的问题
- 中检测到一个可能的数据库一致性问题。|解决方法
- 分布式一致性解决分布式一致性问题用二阶段提交一个没有高可用组件的数据库不能依靠外部软件来实现高可用
- 中检测到一个可能的数据库一致性问题。|解决方法
- 使用Spring4.3解决缓存过期后多线程并发访问数据库的问题
- Sharding(切片)技术(解决数据库分库一致性问题)
- 使用Spring4.3解决缓存过期后多线程并发访问数据库的问题
- 在数据库"WSEDSQLDB"中检测到一个可能的数据库一致性问题。|解决方法
- 解决WebPart 连接数据库问题 2
- 访问数据库时如何解决并发问题
- 第一次使用jdbc连接postgre数据库碰到的问题及解决方法
- dreamweaver连接数据库典型问题解决方法
- asp中关于数据库无法写入问题的解决
- 解决PEAR::DB类处理多数据库问题
- MySQL5.0中文问题及JDBC数据库连接和JSP汉字编码问题解决方法总结
- Java访问数据库的速度瓶颈问题的分析及解决
- dreamweaver连接数据库典型问题解决方法
- 蛙蛙推荐:导数据库的几个字段转换问题的解决
- 解决使用ASP无法连接 ORACLE 9i 数据库的问题。
- 解决了对数据库的排它访问权的问题