Redis与数据库数据一致性的示例分析

技术Redis与数据库数据一致性的示例分析这期内容当中小编将会给大家带来有关Redis与数据库数据一致性的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 可能谈到保持R

本期,边肖将为您带来Redis和数据库数据一致性的示例分析。文章内容丰富,从专业角度进行分析和描述。看完这篇文章,希望你能有所收获。

说到维护RedisMysql双银行的数据一致性,许多人想到的第一个解决方案可能是序列化读请求和写请求,并将它们串入内存队列。

然而,这种方案有一个致命的缺点:读请求和写请求的序列化将大大降低系统的吞吐量,需要比正常情况多几倍的机器来支持在线请求。为什么会出现RedisMysql双数据库数据一致性的问题?实际上,我们可以考虑这样一个业务场景:我们需要更新一些数据。我们首先更新数据库数据,然后清除Redis缓存中的数据。但是数据库更新操作成功,但是在清除Redis,的缓存时出现了异常,导致数据库中的数据已经更新为最新数据,但是Redis的缓存中的数据仍然是旧数据,这样就会出现RedisMysql的双数据库的数据一致性问题。有些喜欢机会主义的朋友会想,难道我不能先清除缓存中的旧数据,然后将新数据写入数据库,最后更新缓存吗?这样,可能会有一个。

问题:我们成功清除了Redis缓存,但在新数据写入数据库之前,会发生读取请求,这将导致数据库中的旧数据再次存储在Redis,然后等待新数据写入数据库。RedisMysql双数据库的数据一致性。

昨天讲到Redis,的分布式环境,其实我说的是在分布式环境下,数据读写操作是并发操作,所以一条数据读写操作的执行顺序不能保证,所以有可能读操作先于写操作执行,然后脏数据会导致数据一致性问题。此时,我们需要考虑我们读取的数据是否强一致。例如,如果账户余额必须是强一致的,我们应该读取数据库。如果我们读取的数据的实时性不是很严格,比如评分表,我们可以直接读取Redis数据。如果机器并发性不高,读取的数据会先从Redis读取,缓存中的数据只有在不存在的情况下才会从数据库中获取,从数据库中获取的数据会写入Redis.相反,在写入数据时,先清除Redis,缓存的数据,再将数据写入数据库。如果是简单的数据,可以实时写入Redis进行读取操作。如果是需要多表查询的数据,可以暂时不写入Redis,有查询操作时再写入Redis

如果是高并发情况呢?在高并发的情况下,读取数据的操作同上,首选从Redis读取。然而,写数据的操作与刚才不同。在高并发的情况下,写入数据首先写入Redis,然后定期从Redis写入Mysql.在高并发的情况下,应该注意的是,每个读取数据的请求都需要在超时期限内返回数据。如果数据更新频繁,可能会导致Redis,出现一系列更新操作,导致大量读取数据请求超时。最后,所有这些读取数据的请求都被压到数据库中,这将导致缓存崩溃的现象,这可能会严重导致数据库宕机。此时,该解决方案通常通过添加机器来增加吞吐量,或者先将旧数据暂时返回给客户端。所以这里我们其实有一个非常明确的计划。常见的方案有两种:Redis做缓存服务器,一般做缓存有两个目的:快速处理请求,降低I/O.的频率降低I/O的频率其实就是在刚才提到的高并发的情况下,将数据实时写入数据库,然后将数据积累到一定程度,定期写入数据库。请求的快速处理意味着在处理读请求时来自Redis的访问受限。Redis支持高并发操作。因此,处理速度非常快。如果Redis,中没有数据,请在数据库中查询它,然后将其写入redis,的缓存中,以便可以直接从缓存中检索数据进行二次读取。事实上,第二种方案是异步缓存。Redis缓存热门数据,所有的增删查操作都在Mysql.只要Mysqlinsert,updatedelete,kafka-related有操作就可以通过rabbitMQbinlog等第三方消息推送工具将消息推送到Redis,分析http://www . Sina.com/http://www . Sina.com/中的数据更新Rediscache中的数据,并在http://8中建立主从备份机制

这是对Redis和上面边肖共享的数据库数据之间的一致性的示例分析。如果你恰好也有类似的疑惑,可以参考上面的分析来理解。想了解更多,请关注行业信息渠道。

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

(0)

相关推荐

  • 微服务设计的方法是什么

    技术微服务设计的方法是什么这篇文章主要讲解了“微服务设计的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微服务设计的方法是什么”吧!一、微服务架构理论1.六边形

    攻略 2021年11月16日
  • 11月17

    技术11月17 11月17一、RowDeleting当单击某一行的 "删除" 按钮时,但在控件删除该行之前,将引发该事件GridView。这使你可以提供一种事件处理方法,该方法可在每次发生此事件时执行自

    礼包 2021年11月18日
  • 电烤箱品牌,什么牌子的家用烤箱比较好

    技术电烤箱品牌,什么牌子的家用烤箱比较好大家好,我是Jessica,是一位爱美食、爱分享的美食博主电烤箱品牌。
    家用烤箱有些人为了省空间,追求比较小的。但是我不推荐!
    因为,烤箱容量太小,容易受热不均匀,对烤出的东西有很

    生活 2021年10月26日
  • Java单例模式和多例模式是什么

    技术Java单例模式和多例模式是什么本篇内容介绍了“Java单例模式和多例模式是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够

    攻略 2021年11月19日
  • C++怎么将连结线程看作范围化的容器

    技术C++怎么将连结线程看作范围化的容器这篇文章主要讲解了“C++怎么将连结线程看作范围化的容器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++怎么将连结线程看作范围

    攻略 2021年11月25日
  • docker使用常用命令(docker常用的15个命令)

    技术Docker的常用命令是什么这篇文章主要介绍“Docker的常用命令是什么”,在日常操作中,相信很多人在Docker的常用命令是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Doc

    攻略 2021年12月13日