缓存层与数据库层数据同步

技术缓存层与数据库层数据同步 缓存层与数据库层数据同步缓存层与数据库层数据同步问题
在实际的业务开发中,为了避免大量请求直接操作数据库,我们会用redis做一个缓存层,用户的数据库请求先在redis中查

缓存层和数据库层之间的数据同步。

缓存层与数据库层数据同步问题

在实际的业务开发中,为了避免大量的请求直接操作数据库,我们将使用redis作为缓存层。用户的数据库请求将首先在redis中查询,一旦找到就会返回。如果找不到它们,它们将从数据库中获取数据来更新缓存,然后返回。

这涉及到如何保持缓存层和数据库层之间的数据一致。

一、旁路缓存方案

写入时,先修改数据库,然后删除相关缓存。

删除缓存而不更新的原因主要基于:

一些缓存更新涉及多个表之间的复杂操作,频繁更新会消耗性能。如果未删除缓存,则每次更新数据库时都会计算缓存,但删除缓存后,只有在下一个请求到来时才会计算缓存。

这种方案的缺点是,当删除缓存失败时,客户将读取旧数据,直到下一次数据更新。

二、双写一致方案

在更新数据库之前删除缓存。

通过首先删除缓存,防止用户读取旧数据。

这种方案的缺点是:如果数据库更新失败,用户仍然会读取旧数据,但不会出现不一致;如果请求是在数据库更新完成之前发出的,缓存仍然会加载到旧数据中,从而导致不一致。

三、延时双删方案

首先删除缓存,然后更新数据库。更新成功后,再次异步删除缓存。

这确保了在数据库成功更新后,缓存中的数据在一定时间后必须是更新的数据。

缺点:从成功的数据更新到成功的第二次缓存删除,用户可能会在短时间内读取旧数据。

总结

三种方案都不能称之为完美,使用时要根据需要选择。如果对数据一致性要求比较高,应该选择延迟和双重删除。如果不要求数据一致性且并发性不高,则选择双写一致性或绕过缓存。

当然,如果我们想要追求完美的数据一致性,就必须使用串行请求,但这将大大降低网络吞吐量。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/61500.html

(0)

相关推荐

  • 体表面积计算公式,基础代谢率对照表是什么

    技术体表面积计算公式,基础代谢率对照表是什么基础代谢率对照表是什么体表面积计算公式?基础代谢率对照表是指基础代谢率与年龄对应的表格。我国正常基础代谢率平均值如下表[kJ/(m²·h)]基础代谢率是指室温(18~25℃)条

    生活 2021年10月27日
  • 牛客网面试题

    技术牛客网面试题 牛客网面试题目录
    一、JAVA
    二、计算机网络
    三、操作系统
    四、项目
    五、数据库
    第六部分 框架
    第七部分 设计模式
    第八部分 数据结构和算法
    第九部分 Linux
    ########

    礼包 2021年12月20日
  • 怎么利用数据库触发器实现数据的同步

    技术怎么利用数据库触发器实现数据的同步本篇内容主要讲解“怎么利用数据库触发器实现数据的同步”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么利用数据库触发器实现数据的同步”吧

    攻略 2021年11月4日
  • 黄骨鱼的做法,怎样才能做出好吃又营养的黄骨鱼

    技术黄骨鱼的做法,怎样才能做出好吃又营养的黄骨鱼食材:鲜活黄骨鱼(一般一餐一个人可以吃两至四条黄骨鱼的做法,最好购买新鲜的,可以自己拿回家处理,也可让卖家代劳) 配料:姜、葱、蒜、植物油、盐、味精、酱油、豆瓣酱、红剁椒(

    生活 2021年10月27日
  • 阿里巴巴开源Sentinel限流方案搭建是怎样的

    技术阿里巴巴开源Sentinel限流方案搭建是怎样的阿里巴巴开源Sentinel限流方案搭建是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所

    攻略 2021年10月20日
  • redis未授权

    技术redis未授权 redis未授权Redis服务简介
    Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可

    礼包 2021年11月9日