当前位置: 首页 > news >正文

网站建设合同属于购销吗杭州优化建筑设计

网站建设合同属于购销吗,杭州优化建筑设计,网站服务器如何做端口映射,wordpress主题怎么写在我们的实际开发中,我们用到了redis缓存一些常用的数据(如热点数据)用来提高系统的吞吐量。 但是不可以避免的出现了数据的修改场景,这就导致了数据库中的数据和Redis中出现不一致性的情况。如何保证数据一致性就显得非常重要了&…

 在我们的实际开发中,我们用到了redis缓存一些常用的数据(如热点数据)用来提高系统的吞吐量。 但是不可以避免的出现了数据的修改场景,这就导致了数据库中的数据和Redis中出现不一致性的情况。如何保证数据一致性就显得非常重要了,下面介绍一下保证数据的双写一致性的方案。

   

1、先删缓存再操作数据库方案

    在redis一般写的场景下对数据的更新操作是不推荐使用的,推荐使用删除缓存数据的操作,因为删除操作的效率更高。下图展示先删除缓存再操作数据库的过程图:

图片

在这种方式下会存在数据不一致的问题,如下图所示:

图片

(1)线程1要更新数据,它先删除redis中的缓存数据,然后由于网络堵塞导致暂短的停顿,没有继续执行操作数据库 

(2)线程2要查询数据,首先查询数据库,但是由于Redis中的数据已经被线程1删除了,那么它会去数据库中查询数据X并且要将数据X同步到Redis中

(3)线程1网络堵塞结束,执行了数据库操作将数据X更改为Y

    经过上述的过程就导致了Redis的数据和数据库中的数据不一致了,即就是Redis中存放的依据是老数据。为了解决上述的问题,我们采用缓存延迟双删的策略,如下图所示的缓存延迟双删的过程:

图片

    采用缓存延迟双删策略最多在X毫秒内读取的数据是老数据,在X毫秒之后读取的数据都是最新的数据。X的具体值如何确定那就需要根据自身的业务了来确定。

    延迟双删策略只能保证最终的一致性,不能保证强一致性。由于对Redis的操作和Mysql的操作不是原子性操作,所以如果想保证数据的强一致性就需要加锁控制,如下图所示:

图片

    加锁之后势必会带来系统的吞吐量的下降,所以需要衡量利弊来确定是否使用加锁。

2、先操作数据库再删除缓存方案

图片

    此方案就是先操作数据库,数据库写入成功之后再来删除Redis缓存中的数据。多个线程之间的数据读取和更新如下图所示:

图片

    这种方案下,在数据库更新成功后到删除Redis缓存数据之前的这段时间中,其他线程读取的数据都是旧数据,等Redis删除缓存后会重新从数据库中读取最新数据同步到Redis,这样可以在一定程度上保证数据的最终一致性。极端情况下会出现数据不一致的情况,如下图所示:

图片

(1)线程1先成功的更新数据到数据库中,然后执行删除Redis缓存中的数据的时候失败了

(2)线程2要读取数据,此时优先从Redis中查询数据,由于此时Redis中老数据没有删除,所以线程2可以拿到旧数据直接返回。直到Redis中缓存的数据过期之后才可以从数据库中获取最新的到Redis中

3、删除重试机制

    无论是先删除缓存再操作数据还是先操作数据库再删除缓存的机制,都有可能会出现删除缓存失败的情况,如下图所示:

图片

    为了应对删除缓存失败的情况发生,于是加入了删除重试机制,如下图所示:

图片

    通过canal监听binlog感知数据的变动后,canal客户端执行删除Redis缓存数据,如果缓存数据删除失败那么发送一条MQ消息让canal客户端继续执行删除操作,这样可以保证数据的最终一致性。但是这样也增加了系统的复杂性。

4、总结:

(1)实际开发中推荐使用先操作数据库再删除缓存的方案,因为此方案最大程度上保证了数据的一致性并且实现也最简单。

(2)无论是先操作数据库再删除缓存还是先删除缓存再操作数据库都有可能会出现删除缓存失败的情况,所以需要加入删除重试机制。

(3)如果想要Redis和Mysql的数据强一致性,可以考虑使用加锁的方式实现。

5、实际应用

在实际应用中,我们一般会采取云服务器使用并处理实时同步RDS与Redis构建缓存一致性,可参考我的上一篇文章:实时同步RDS与Redis构建缓存一致性-CSDN博客

        通过DTS数据订阅能力,用户可以实时订阅RDS日志数据变更,并将其写入Redis以实现缓存数据的更新。这样的配置可以实现MySQL与Redis之间的缓存同步一致性,采用了Cache-Aside Pattern模式。通过DTS的服务化能力,用户可以保证高效、稳定和实时的数据同步。从而用户能够实现商品信息的实时同步,确保在系统中的商品信息始终是最新的。同时,对于账单信息的查询也能够变得高效,用户可以从Redis中获取已缓存的数据,减少对MySQL的频繁访问,提升查询性能。这样的解决方案不仅能够提高系统的响应速度,还能够保证数据的一致性和准确性,为用户提供更好的使用体验。

        我使用的服务器组合是云服务器ECS省钱攻略,可以试用。

        通过RDS MySQL+DTS+Redis的架构,实现RDS MySQL与Redis缓存之间的数据同步和一致性。通过实时同步MySQL数据库数据到Redis缓存,提高数据查询速度,降低数据库压力,确保业务数据的实时性和准确性。

http://www.yayakq.cn/news/532533/

相关文章:

  • 天猫优惠券网站怎么做天猫购物商城官网
  • 专业的开发网站建设价格手机网站按那个尺寸做
  • 怎么做公司的中英文网站server 2012 做网站
  • 网站建设管理制度实施方案中职网络营销专业
  • 泉州建设系统培训中心网站2017做那个网站能致富
  • 网站只有一个首页单页面怎么做排名wordpress 登录注册
  • 哪个网站做h5比较好wordpress自定义图片
  • 做公司网站有什么需要注意的法学网站阵地建设
  • 自己做个网站的流程牛皮纸 东莞网站建设
  • 猫眼网站建设中卫市住房建设局网站
  • 网站开发微信公众号自定义菜单做seo对网站推广有什么作用
  • 公司网站百度排名没有了比wordpress更好的
  • 学校网站建设实训总结查看域名注册信息
  • 大连做网站价格wordpress数据库名怎么修改
  • 企业品牌文化建设学习网站亚马逊产品开发流程8个步骤
  • 专业网页制作网站推广公司泉州服装网站建设
  • 哪里有做网站服务网上服务大厅用户登录
  • 简单的网站建立怎么做哈尔滨百度搜索排名优化
  • 天津网站建设推荐安徽秒搜科技php的网站数据库如何上传
  • 兰州优化网站排名百度旧版本
  • 贵阳个人做网站如何做自己网站平台
  • 汕头网站建设运营团队产品设计创意图片
  • 温州市建设监理协会网站wordpress替换图片路径
  • 外贸网站logo江苏华柯建设发展有限公司网站
  • 自己手机怎么免费做网站学校网站模板设计
  • 移动网站适配婴儿网站模板
  • 手机网站生产app行业网站运营方案
  • 北京织梦网站建设找个人制作网页的网站
  • 江宁网站建设公司wordpress oss
  • 简单的企业网站cms做导航网站不侵权吗