高频面试题:Cache Aside机制

Cache Aside机制是一种缓存更新策略,在不需要缓存和数据库强一致性的业务场景下,Cache Aside机制是首选方案。

读策略:

优先从缓存读取数据,如果缓存中命中数据直接返回数据;如果缓存中没有命中数据,那么就从数据库加载数据返回客户端并且保存数据到缓存中。

写策略:

首先更新数据库中的,然后再删除缓存中的数据。

Cache Aside存在的问题:

(1)线程A先读取数据,此时缓存未命中再去读取数据库中的数据20,恰好此时的CPU时间片使用完了。

(2)线程B执行更新操作操作,将数据库中的数据更新成21,然后删除缓存,此时B的CPU时间片使用完了,但是、线程A又获取CPU的时间片

(3)线程A将缓存的值更新成20,但是20 不是数据库中的最新值,造成了数据库和缓存中的数据不一致的问题。

发生缓存数据和数据库中数据不一致满足的无天性条件:1、读操作的数据缓存中无数据,这样才会去数据库中加载数据;2、读操作进行的同时,存在一个写操作;3、读操作的时长大于写操作的时长;4、读写操作并发的时候,读取的数据是旧值。

解决办法缓存和数据库数据不一致的办法:缓存双删方案

Cache Aside适用于多读写少的场景,不适合写多的场景,因为写多的场景下缓存会被频繁地清理,这样会对缓存的命中有一定的影响。

9