|
|
@ -60,8 +60,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
实际上,我们可以继续优化这个实现思路,比如引入散列表(Hash table)来记录每个数据的位置,将缓存访问的时间复杂度降到 O(1)
|
|
|
|
实际上,我们可以继续优化这个实现思路,比如引入散列表(Hash table)来记录每个数据的位置,将缓存访问的时间复杂度降到 O(1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 缓存一致性
|
|
|
|
## 缓存一致性
|
|
|
|
|
|
|
|
|
|
|
|
**对于读是不存在缓存与数据库不一致的的情况**。读的流程:
|
|
|
|
**对于读是不存在缓存与数据库不一致的的情况**。读的流程:
|
|
|
@ -107,10 +105,15 @@
|
|
|
|
- 线程 A 将查到的旧值写入缓存
|
|
|
|
- 线程 A 将查到的旧值写入缓存
|
|
|
|
|
|
|
|
|
|
|
|
解决办法:
|
|
|
|
解决办法:
|
|
|
|
- Cache Aside Pattern
|
|
|
|
|
|
|
|
|
|
|
|
- Cache-Aside模式
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|

|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
!!! info "什么是Cache-Aside模式?"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**Cache-Aside(旁路缓存)模式** 是一种缓存策略,当缓存未命中时从数据库加载数据并更新缓存,以提高读取效率,同时在数据更新时同步更新缓存和数据库以保持一致性。
|
|
|
|
|
|
|
|
|
|
|
|
- binlog模式
|
|
|
|
- binlog模式
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|

|
|
|
|