#青训营 x 字节后端训练营# ## 数据一致性问题
只更新数据库, 但未更新缓存, 就会存在不一致问题
### 定时器, 定时同步MySQL数据到Redis中
适合数据量比较少的场景.
实时性不好, 在定时器间隔内, 仍不会更新缓存, 存在60s内的数据不一致.
### 同时更新数据库和Redis缓存, "并发双写"
在更新MySQL的同时, 更新缓存
单线程无所谓, 但高并发场景下就存在一致性问题: 并发双写
加锁, 会损失性能.
### 删除缓存
#### 先删除Redis缓存, 再更新数据库, "延迟双删"
再次查询的时候, 缓存内无相关内容, 会进行缓存重建.
一般不会使用, 高并发下做延迟太损失性能.
#### 先更新数据库, 再删除Redis缓存, "异步更新缓存"
会有较短时间(几百毫秒)内的数据不一致.
先删除缓存, 数据不一致的情况比较严重写. 所以一般使用后删除缓存. 但在删除缓存失败时也会存在问题
这种情况, 可以通过给key添加过期时间解决.
展开
评论