缓冲容量大小的影响因素是什么?

缓冲容量大小的影响因素是什么?,第1张

缓冲容量大小的影响因素是缓冲比和总浓度。对于同一缓冲系 ,当缓冲比一定时,总浓度越大,抗酸成分和抗碱成分越多,外加同量酸碱后,缓冲比变化越 小,缓冲容最大 ,缓冲能力就越强;反之 ,总浓度越小,缓冲容量越小 ,缓冲能力就越弱。

对于同一缓冲系 ,当总浓度一定时,缓冲比越接近 1,外加同量酸碱后 ,缓冲比变化越小 ,缓冲容量越大 ,缓冲能力就越强;反之 ,缓冲比越偏离 1,缓冲容量越小 ,缓冲能力就越弱。 当缓冲比等于1,缓冲容量最大。

缓冲的方式

先更新数据库,再更新缓存。这种做法最大的问题就是两个并发的写 *** 作导致脏数据。如下图(以Redis和Mysql为例),两个并发更新 *** 作,数据库先更新的反而后更新缓存,数据库后更新的反而先更新缓存。这样就会造成数据库和缓存中的数据不一致,应用程序中读取的都是脏数据。

先删除缓存,再更新数据库。这个逻辑是错误的,因为两个并发的读和写 *** 作导致脏数据。(以Redis和Mysql为例)。

假设更新 *** 作先删除了缓存,此时正好有一个并发的读 *** 作,没有命中缓存后从数据库中取出老数据并且更新回缓存,这个时候更新 *** 作也完成了数据库更新。此时,数据库和缓存中的数据不一致,应用程序中读取的都是原来的数据(脏数据)。

写一个缓存类,将数据写到缓存中时把缓存时间设置为1年或者更久

然后当你数据库更新后清除这个缓存或者将缓存时间改成0,这样再次进入这个页面的时候就会被新数据重新缓存进来了~

用消息队列更新缓存原因:

1、通过消息队列将更新缓存 *** 作串行处理,可以解决并发更新的问题,比如线程A、线程B在并发更新数据库时,利用数据库事务隔离机制避免脏读。

2、然后把数据标识写入消息队列,接下来消费消息队列,再通过数据标识去读取数据库相应数据并刷新缓存。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9953089.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存