Cache-Aside策略:
- 更新的时候,先更新数据库,然后再删除缓存。
因为如果如果先删除后更新,可能造成读到脏数据:请求1先把cache中的A数据删除 -> 请求2从DB中读取数据->请求1再把DB中的A数据更新。
但是如果先更新后删除:请求1更新DB -> 请求2读取缓存中旧数据 -> 请求1删除缓存中数据,也会导致读到旧数据。
所以我不太理解为什么要先更新后删除,都存在读到脏数据问题。
2022-08-06 03:42:00 【segmentfault】
Cache-Aside策略:
因为如果如果先删除后更新,可能造成读到脏数据:请求1先把cache中的A数据删除 -> 请求2从DB中读取数据->请求1再把DB中的A数据更新。
但是如果先更新后删除:请求1更新DB -> 请求2读取缓存中旧数据 -> 请求1删除缓存中数据,也会导致读到旧数据。
所以我不太理解为什么要先更新后删除,都存在读到脏数据问题。
如果是先删除缓存再更新,那每次更新时都需要删除缓存,无论更新失败与否,下次请求都还要把结果放到缓存中
而先更新再删除缓存,如果更新失败,那么就不需要删除缓存
而一致性问题都是会存在的,常用的解决方案是延时双删
楼主所说的脏读和一致性不是同一个问题,一致性是指缓存和数据库的数据不一致了,缓存里的数据是旧数据(在删除缓存之后还是旧数据)。而脏读只是读到了缓存里的旧数据,这个可以使用数据库的事务来解决,把更新数据库和删除缓存放在一个事务中,删除缓存之后再提交事务
如果是先删除缓存再更新,那每次更新时都需要删除缓存,无论更新失败与否,下次请求都还要把结果放到缓存中
而先更新再删除缓存,如果更新失败,那么就不需要删除缓存
而一致性问题都是会存在的,常用的解决方案是延时双删
楼主所说的脏读和一致性不是同一个问题,一致性是指缓存和数据库的数据不一致了,缓存里的数据是旧数据(在删除缓存之后还是旧数据)。而脏读只是读到了缓存里的旧数据,这个可以使用数据库的事务来解决,把更新数据库和删除缓存放在一个事务中,删除缓存之后再提交事务

Lvm根分区扩容

Failed to save image in R language ggplot2 loop

2022 使用Go语言构建现代 Web 应用程序实战内容课程

If you like us, it is better to join us: come and contribute, the payment is reliable!

Internet protocol overview

2018HBCPC Partial Solutions

2022 Alibaba Cloud server configuration selection strategy

Questions about the control class of electric games

xctf攻防世界 Web高手进阶区 upload1

Django用orm修改mysql数据库运行出现错误
FluentValidation
Advantages and disadvantages of solid tires
NetCore - custom exception handling
[wpf] Detailed explanation of three callbacks for dependency properties
电赛的控制类选题之问
Internet Security Aid: Free MD5 Decryption Website
NPDP为什么越来越受追捧?产品经理你可知道?
离散数学期末习题
To build their own core, let Google pay!Google has open source 180 nm process chip
xctf attack and defense world Web master advanced area easytornado
The first day of learning MySQL: MySQL overview (basic)
谷歌账户暂停三个月重新启用,谷歌账户暂停三个月重新启用,转化目标是否有效?
Literature Reading---Analysis of Genome Haplotypes and Genome Stability and Creeping of Common Bermudagrass Yangjiang
4.cuBLAS开发指南中文版--CUDA 数据类型引用
Entering the pit of machine learning: three, unsupervised learning
Django用orm修改mysql数据库运行出现错误
(十)集合 -Set
经典sql例子
foam filled tires
sql server, two tables, the same field, the same amount of data (50 million), execute the same query, one table executes an index scan, scanning 50 million, which takes 2 minutes, the other table exec