先删缓存还是先删数据库
来源:互联网 发布:网络神曲2015 编辑:程序博客网 时间:2024/06/02 16:40
在论坛上看到好多人说先删除缓存在更新数据库,这种逻辑是错误的,
第一种情况先删缓存在删数据库:在多线程环境下,当一个线程把缓存删掉之后,另一个线程都缓存,都不到缓存就会直接读库,读到数据后就会更新缓存,先前的线程呢,才更新数据库,会造成缓存脏读的情况,很容易产生缓存脏读。
第二种情况先删数据库再删缓存,在多线程情况下,当一个线程删除数据库,另一个线程读取缓存数据,读到的是缓存的数据,当先前一个线程删完数据库后就会更新缓存,这是缓存就正常了,产生了一次脏读。
第一种和第二种对比
1.第一种产生了长时间的脏读,第二种只有很短时间的脏读
2.第一种删除缓存后会造成缓存击穿,如果大量线程访问就会中造成数据库压力过大,第二种其他线程会读取缓存数据,不会对数据库造成很大压力,更新数据库后缓存马上就更新了。
1 0
- 先删缓存还是先删数据库
- 先设计数据库还是先搭建框架环境?
- 先懂事还是先上网?
- 先rollback还是先messagebox
- 先测试还是先代码
- 先放大还是先滤波?
- 先排序还是先取值
- 先排序还是先取值
- 先排序还是先取值
- 先排序还是先取值
- 先 innodb 还是 myisam
- 先有Function 还是先有 Object
- 先考学历还是先提升能力?
- 先有春天还是先有冬天??
- 先有Class还是先有Object?
- 数据先加载还是先展示?
- Spring安全认证是从内存先还是从数据库中先?
- 访问数据库先查看缓存再看数据库小练习
- __builtin_expect详解
- Ubuntu14.04下搭建VPN服务
- 一些环境问题
- 从图库获取图片的真实格式
- 21.中介者模式
- 先删缓存还是先删数据库
- oracle 12c database安装时各版本linux所需要安装包
- Struts2标签的<s:set>标签与JSTL的<c:set>标签
- Rxjava+ReTrofit+okHttp深入浅出-终极封装
- android app被系统回收后重启异常的解决方法
- g2o简单测试
- SpringMVC整合fastdfs-client-java实现web文件上传下载
- Android开发环境搭建
- Apach+php安装