经典缓存模式
旁路缓存
读数据
首先读缓存,
- 如果缓存中有这个数据,直接返回
- 如果缓存中没有这个数据,去读数据库,
- 如果数据库中有这个数据,先把这个数据更新到缓存,再返回数据
- 如果数据库也没有这个数据,返回无数据
写数据
先更新数据库,再删除缓存
读写穿透缓存
这个模式在用户和缓存之间多了一个抽象缓存层,
读操作
- 用户请求抽象缓存层读取数据
- 抽象缓存层读取缓存数据,
- 如果成功读到缓存数据,直接返回
- 如果在缓存中读取失败,再去读数据库
- 如果在数据库中成功读取到了数据,返回给抽象缓存层
- 抽象缓存层负责写入缓存数据
- 抽象缓存层把数据返回给用户
写操作
- 用户请求更新数据库
- 抽象缓存层更新数据库
- 抽象缓存层更新缓存
异步缓存写入
用户申请抽象缓存层更新数据
抽象缓存层只更新缓存数据
后台线程批量把缓存数据更新到数据库