一、旁路缓存模式
比较适合读请求比较多的场景
写 :
- 先更新 DB
- 然后直接删除 cache 。
读 :
- 从 cache 中读取数据,读取到就直接返回
- cache中读取不到的话,就从 DB 中读取数据返回
- 再把数据放到 cache 中。
问题一 “在写数据的过程中,可以先删除 cache ,后更新 DB 么?”
不可以。会导致数据不一致。
请求1先把cache中的A数据删除 -> 请求2从DB中读取数据->请求1再把DB中的A数据更新。
(所以请求二读取的是过时的数据。因为请求一写的数据还没来得及更新到数据库)
问题二
“在写数据的过程中,先更新DB,后删除cache就没有问题了么?”
可能会出现数据不一致性的问题,不过概率非常小,因为缓存的写入速度是比数据库的写入速度快很多!
缺陷1:首次请求数据一定不在 cache 的问题
缺陷2:写操作比较频繁的话导致cache中