栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

双写一致性;缓存与数据库一致性问题;

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

双写一致性;缓存与数据库一致性问题;

双写一致性

即,缓存和数据库的数据保持一致
结合查询的资料简单的对双写进行分析总结。

1 先更新缓存,后更新数据库

不推荐。
产生的问题:缓存一般不支持事务回滚,或设计回滚代价较高,当更新数据库遇错回滚,缓存无法进行相同的操作。

2 先更新数据库,后更新缓存

不推荐。
产生的问题:线程A、线程B修改数据库,由于网络原因,B先于A修改了缓存,导致数据库与缓存不一致。

3 先删缓存,后更新数据库

不推荐。
一般情况下,数据库的写操作要慢于读操作
产生的问题:线程A删缓存,线程B读缓存时无数据,查数据库,
线程A修改数据库,线程B将旧值缓存,此时数据库与缓存不一致。

先删缓存,后更新数据库,再删缓存
不推荐。
高并发下
产生问题:线程A删缓存,线程B读缓存时无数据,查数据库,线程A修改数据库,删除缓存,
线程B将旧值缓存。

先删缓存,后更新数据库,延时,再删缓存 (延时双删)
可用, 过程:线程A删缓存,线程B读缓存时无数据,查数据库,线程A修改数据库,延时一定时间,在这段时间内
线程B将旧值缓存,线程A删除缓存。要合理控制延时时间。

4 先更新数据库,后删除缓存

推荐。
可能出现的问题:缓存失效,线程B查库获取旧值,线程A修改数据库,线程A删缓存,线程B缓存旧值。
仍然可以使用延时双删解决可能出现的问题。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769437.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号