image.png

缓存失效问题

image.png
image.png

缓存与数据库数据的一致性

满足最终一致性:最后肯定可以看到数据库中一致的数据

1.双写模式

修改完数据库中的数据就对缓存中的数据进行修改
问题:高并发下同时修改一条数据,如A先修改了数据还未即使放入缓存,此时B修改了数据并放入缓存,然后A再放入缓存,造成了数据的不一致
根据是否能够接收数据不一致问题(设置了过期时间到时间也会删除了

2.失效模式

修改完数据库中的数据然后将缓存删除
问题:当三个线程进行操作,A先改了数据库,线程失去CPU执行权,还未删除缓存,B也修改了数据库并且删除了缓存,此时C进行查询,发现没有缓存然后去读数据库并放入缓存,此时A又将缓存删除

加读写锁可以解决问题,但是性能会下降,需要根据不同场景权衡

总结:

image.png
05、缓存&分布式锁.pdf