缓存更新策略为什么是先更新数据库再删除缓存

缓存更新策略

首先我们要确定更新数据库内容时,对于缓存一定是删除操作

因为假设是更新数据库时同时更新缓存时,那么当多个线程同时对数据库进行修改时,数据库更改的内容会多次写入缓存,但是其中很多次写入的信息是无效的,其实对于这种场景我们只要求最后的缓存中的内容和数据库中的内容相同即可。那么保证我们最后使用的缓存数据一定是和数据库中的数据是一致的。也就是这种做法保证了数据库和缓存的最终一致性。

那么当每次更新时删除缓存,就可以保证下一次访问时,可以将数据库中的数据写入缓存。

那么对于先更新数据库还是先删除缓存,可以观察以下场景。对于左边,造成数据不一致的现象了。而且这种现象是特别频繁的,因为我们删除缓存是一步很快的操作,而查询缓存和写入缓存都比更新数据库要快,所以发生这种现象的概率是很大的。

对于右边的也发生了数据不一致现象。但是这种情况发生的概率很小,一位内更新数据库是一步很慢的操作。很少会在查缓存和写缓存中间执行。发生数据不一致的概率较小。另外,我们还可以通过定时删除让发生这种情况的概率进一步缩小。

所以对比两种策略来看,我们在进行数据库更新操作时,使用的是cache aside pattern,而具体采用的策略是先更新数据库,再删除缓存,同时使用定时删除策略保证数据发生不一致的概率减小。同时使用事务,保证上述两种操作的原子性。

image

posted @ 2025-02-25 11:19  带一把雨伞当剑  阅读(39)  评论(0)    收藏  举报