加入收藏 | 设为首页 | 会员中心 | 我要投稿 吉安站长网 (https://www.0796zz.com.cn/)- 科技、图像处理、媒体智能、办公协同、操作系统!
当前位置: 首页 > 站长资讯 > 动态 > 正文

更新数据库还是先更新缓存?

发布时间:2021-03-25 10:17:09 所属栏目:动态 来源:互联网
导读:存呢?先写数据库和先写缓存有什么区别吗?今天,我们就一起来聊聊这个话题。 从本质上讲,无论是先写数据库还是先写缓存,都是为了保证数据库和缓存的数据一致,也就是我们常说的数据一致性。 随着互联网的高速发展,当今时代已然从IT时代进入到DT时代。互联

存呢?先写数据库和先写缓存有什么区别吗?今天,我们就一起来聊聊这个话题。

从本质上讲,无论是先写数据库还是先写缓存,都是为了保证数据库和缓存的数据一致,也就是我们常说的数据一致性。

随着互联网的高速发展,当今时代已然从IT时代进入到DT时代。互联网系统架构也已经由最初的单体架构转变为分布式、微服务架构模式。从数据体量上来看,各系统存储的数据量越来越大,数据的查询性能越来越低。此时,就需要我们不断的进行优化,一种常用的优化手段就是引入缓存。而引入缓存后,我们在向数据库插入数据时,到底是先更新数据库还是先更新缓存呢?

缓存的一般使用

缓存,从本质上讲,是为了更好的协调两个速度差异比较大的组件而引入的一种中间缓存层。例如,如果需要将数据读入CPU进行计算处理,由于CPU的运算速度是非常快的,而磁盘的IO处理相比于CPU来说,慢了很多数量级,每次从磁盘读取数据,势必会造成CPU长时间并且频繁等待磁盘IO。此时,我们就可以通过内存来缓和CPU和磁盘之间的速度差异。


 

使用示例中,我们只是简单的将数据放入了缓存,最多为缓存设置一个过期时间,到期后,缓存自然就会被清除,后续的请求由于在缓存中获取不到数据,又会从数据库中获取数据,将数据写入缓存。

但是在后续更新数据的操作中,是更新完数据库,接下来更新缓存还是删除缓存?又或者是先删除缓存,再更新数据库?

缓存更新策略

从理论上来说,给缓存设置过期时间,其实是一种最终一致性的表现。这种方案下,可以对存入缓存的数据设置过期时间,所有的写操作以数据库为准,对缓存操作只是尽最大努力即可。也就是说如果数据库写成功,缓存更新失败,那么只要到达过期时间,则后面的读请求自然会从数据库中读取新值然后回填缓存。这也是一般情况下,使用的最多的一种方式。

先更新数据库再更新缓存

其实,这种方案很多有经验的小伙伴是很反对的,为啥,我们来分析下。

首先,这种方案会有线程安全的问题。

例如,同时有线程A和线程B对数据进行更新操作,可能会出现下面的执行顺序。

(编辑:吉安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读