郑州 做网站,做网站需要的流程,wordpress博客dux主题,炫酷的企业网站模板免费下载目录
一、操作缓存和数据库时有三个问题需要考虑#xff1a;
1.删除缓存还是更新缓存#xff1f;
2.如何保证缓存与数据库的操作同时成功或失效
3.先操作缓存还是先操作数据库#xff08;多线程并发问题#xff09;
二、 缓存更新的最佳策略 一、操作缓存和数据库时有…目录
一、操作缓存和数据库时有三个问题需要考虑
1.删除缓存还是更新缓存
2.如何保证缓存与数据库的操作同时成功或失效
3.先操作缓存还是先操作数据库多线程并发问题
二、 缓存更新的最佳策略 一、操作缓存和数据库时有三个问题需要考虑
1.删除缓存还是更新缓存
更新缓存每次更新数据库都更新缓存如果写多读少这样效率太低。删除缓存更新数据的同时让缓存失效查询时再更新缓存。 我们一般会采用删除缓存策略。 2.如何保证缓存与数据库的操作同时成功或失效
单体系统将缓存与数据库操作放在一个事务利用事物本身原子性来保证。分布式系统利用TCC等分布式事务方案。
3.先操作缓存还是先操作数据库多线程并发问题
先删除缓存在操作数据库先操作数据库在删除缓存
那哪一种比较好呢❓ 解释 如果在线程1删除缓存更新数据库的时候线程2查询该数据未命中然后写入缓存这就导致了数据库与缓存不一致并且这种情况发生的概率很大因为更新的时间可能是比较久的而操作缓存是很快的所以这种方式不好 另一种方式 解释 如果某一时刻缓存突然失效了线程1查询缓存未命中准备写入缓存这是线程2来更新数据库了然后删除缓存再然后线程1就要写入缓存了数据又不一致了但是这种情况发生的概率很小。 二、 缓存更新的最佳策略
主动更新缓存并以超时剔除作为兜底方案因为如果缓存过多可能导致内存不足
读操作
缓存命中直接返回未命中则查询数据库并写入缓存设定超时时间
写操作
先操作数据库然后再删除缓存确保数据库和删缓存操作的一致性