原文视频:https://www.bilibili.com/video/BV1aF411e7ur
此模式下能基本保持一致性(存在短时间不一致),如果要强一致性需要使用分布式锁(但是并发不高)
不使用这种CAP模式,我们一般简单的缓存实现是在POST/PUT的之后,将Redis的缓存更新为对应的值,在数据GET的情况下,查询缓存数据,没有再从数据库得到再写入缓存。 但是这种模式并发下,可能会导致缓存和数据库不一致的情况。
CAP模式的意思是,对数据POST/PUT的时候,更新数据库之后直接把旧的缓存删除掉,不再做任何操作。在GET数据的时候,发现没有数据,就从数据库拿,再更新到缓存。我们会发现,会有极端情况导致GET得到了缓存的数据和实际库的数据不一样的情况
image.png image.png这两种情况下的都会出现不一致,第二种更为严重
可以再通过延迟删除缓存,再次缩短这个时间窗口。
image.png假设在延迟删除(2s)期间,有人请求过来,还是会得到更新之前的数据,只不过过了2s之后,这个缓存就会被删除,业务上来说也基本不影响。这个2S就是可能数据不一致的出现时间。
网友评论