错误案例
常见的一种错误做法:删除缓存,然后更新数据库,下一次查询会未命中时则重新加载到缓存。这种做法有什么问题呢?
假如同时有A、B两个请求查询ID为1的订单。A请求先进来且未命中缓存,删除缓存order_id_1,并更新数据库。假如在A未完成数据库更新前,B请求过来发现也未命中则会将数据刷新到缓存。从而导致缓存和数据库数据不一致。
常用模式一: Cache Aside Pattern
Write:更新数据库,然后删除缓存
Read:如果未命中, 从数据库加载
常用模式二 :Read/Write Through Pattern
Read through
Write through:
常用模式三: Write Behind Caching or Write Back Pattern
Write async