redis11_缓存和数据库一致性如何保证解决方案提供canel解决数据一致性问题

所得皆惊喜 所得皆惊喜     2022-12-29     792

关键词:

①. 缓存和数据库双写一致保证

  • ①. 只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题

  • ②. 那么,如何解决一致性问题?提供两种解决方案:双写模式、失效模式
    (下面将介绍这两种模式以及带来的问题)

  • ③. 双写模式:写数据库后,写缓存
    问题:并发时,2写进入,写完DB后都写缓存,这个时候本来缓存最新应该是2的,这样就导致了缓存最新是1

  • ④. 失效模式:写完数据库后,删缓存

  1. 问题:还没存入数据库呢,线程3又读到旧的DB1的数据,本来最新应该是db-2的
  2. 解决方式一:缓存设置过期时间,定期更新
  3. 解决方式二:写数据写时,加分布式的读写锁。

②. 缓存数据一致性-解决方案

  • ①. 无论是双写模式还是失效模式,都会导致缓存的不一致问题。即多个实例同时更新会出事。怎么办?
  1. 如果是用户纬度数据(订单数据、用户数据),这种并发几率非常小,不用考虑这个问题,缓存数据加上过期时间,每隔一段时间触发读的主动更新即可
  2. 如果是菜单,商品介绍等基础数据,也可以去使用canal订阅binlog的方式
  3. 缓存数据+过期时间也足够解决大部分业务对于缓存的要求
  4. 通过加锁保证并发读写,写写的时候按顺序排好队。读读无所谓。所以适合使用读写锁。(业务不关心 脏数据,允许临时脏数据可忽略)
  • ②. 我们能放入缓存的数据本就不应该是实时性、一致性要求超高的。所以缓存数据的时候加上过期时间,保 证每天拿到当前最新数据即可

  • ③. 遇到实时性、一致性要求高的数据,就应该查数据库,即使慢点

③. 缓存数据一致性-解决-Canal

  • ①. 使用Canal更新缓存
  • ②. 比如我们在淘宝页面看到你最近浏览了什么页面,那么下次你登录淘宝的时候,会将你之前浏览的推荐给你

mysql和redis数据如何保持一致

先阐明一下Mysql和Redis的关系:Mysql是数据库,用来持久化数据,一定程度上保证数据的可靠性;Redis是用来当缓存,用来提升数据访问的性能。关于如何保证Mysql和Redis中的数据一致(即缓存一致性问题),这是一个非常经典的问... 查看详情

分布式系统——并发条件下如何保证缓存与db数据一致性

...量、但是同时也会让架构变得复杂。本地缓存与DB一致性解决方案MQ方案新增或更新了一条数据通过gateway负载均衡策略转发到某一台应用A-1应用A-1收到请求后,更新DB,同时更新了自己的本地缓存应用A-1发送更新MQ的广播消息应用... 查看详情

redis缓存如何保证一致性

...,速度快单线程模型,避免线程切换带来的开销,速度快一致性问题  读数据的时候首先去Redis里读,没有读到再去MySQL里读,读回来之后更新到Redis里作为下一次的缓存。写数据的时候回产生数据不一致的问题,无论是先写到... 查看详情

如何保证数据库与redis缓存数据一致性(代码片段)

...解为啥会出现数据不一致呢?根本原因是我们无法将数据库更新操作与缓存更新操作放在同一个事务内同步成功,同步失败!一、常见操作及问题1.1、先更新数据库,后更新缓存    问题:假如有两个请求&#x... 查看详情

如何保证mysql和redis的数据一致性?10张图带你搞定!

...”一般指的是:缓存中有数据,缓存的数据值=数据库中的值。但根据缓存中是有数据为依据ÿ 查看详情

数据库与缓存一致性问题解决方案

...缓存,再更新数据库3.4先更新数据库,再删缓存4.一致性解决方案有哪些4.1缓存延时双删4.2删除缓存重试机制4.3读取binlog异步删除总结一、什么是数据库与缓存一致性数据一致性指的是:缓存中存有数据,缓存的数据值=数据库中... 查看详情

经典好文--如何保证缓存和数据库的双写一致性

面试题如何保证缓存与数据库的双写一致性?面试官心理分析你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?面试题剖析一般来说,如果允... 查看详情

如何保证redis缓存与数据库的一致性?(代码片段)

...更新缓存还是删除缓存2.1更新缓存2.2删除缓存3、先操作数据库还是缓存3.1先删除缓存再更新数据库3.2先更新数据库再删除缓存4、延时双删4.1采用读写分离的架构怎么办?5、利用消息队列进行删除的补偿1、四种同步策略࿱... 查看详情

redis和mysql数据不一致问题如何解决?

...要解决缓存数据不一致的问题,首先要理解为什么缓存和数据库会存在不一致的情况。什么情况下缓存和数据库会不一致?在高并发的情况下,如果所有的数据都从数据库中去读取,那再强大的数据库系统都承受不了这个压力,... 查看详情

趣说|数据库和缓存如何保证一致性?

...了服务器,经过一番排查后,确认服务器的性能瓶颈是在数据库。这好办,给服务器加上Redis,让其作为数据 查看详情

redis与mysql双写一致性(代码片段)

双写一致性时为了保证Redis缓存与MySQL数据库中的数据一样我们对Redis中没有的数据,MySQL怎么回写呢?我们用双检加锁策略这样只要第一个请求发过来,后面的请求就不会发送到MySQL,直接从Redis中获取缓存数据就可以了。 为... 查看详情

redis学习笔记25——缓存异常:如何解决缓存和数据库的数据不一致问题?

缓存和数据库的数据不一致是如何发生的?一致性包含了两种情况:缓存中有数据,那么,缓存的数据值需要和数据库中的值相同;缓存中本身没有数据,那么,数据库中的值必须是最新值。发生的原... 查看详情

redis学习笔记25——缓存异常:如何解决缓存和数据库的数据不一致问题?

缓存和数据库的数据不一致是如何发生的?一致性包含了两种情况:缓存中有数据,那么,缓存的数据值需要和数据库中的值相同;缓存中本身没有数据,那么,数据库中的值必须是最新值。发生的原... 查看详情

另类见解那些要保证缓存和数据库数据一致性的最后怎么了?(代码片段)

...程序性能而言,无疑是个杀手锏,但不是完美的解决方案。关键在于缓存的物理位置和数据真实保存的位置是分离的,当然这里指的是分布式缓存方案。位于不同物理位置的两份数据要想保证强一致性,理论上来... 查看详情

大厂面试01期高并发场景下,如何保证缓存与数据库一致性?

面试题:高并发场景下,如何保证缓存与数据库一致性?问题分析我们日常开发中,对于缓存用的最多的场景就像下图一样,可能仅仅是对数据进行缓存,减轻数据库压力,缩短接口响应时间。这种方案在不需要考虑高并发得去... 查看详情

如何保证数据库缓存的最终一致性?

参考技术A对于互联网业务来说,传统的直接访问数据库方式,主要通过数据分片、一主多从等方式来扛住读写流量,但随着数据量的积累和流量的激增,仅依赖数据库来承接所有流量,不仅成本高、效率低、而且还伴随着稳定... 查看详情

java进阶面试必问:如何保证缓存与数据库的双写一致性?

面试题如何保证缓存与数据库的双写一致性?面试官心理分析你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?面试题剖析一般来说,如果允... 查看详情

保证mysql和redis的数据(代码片段)

...”一般指的是:缓存中有数据,缓存的数据值=数据库中的值。但根据缓存中是有数据为依据,则“一致”可以包含两种情况:缓存中有数据,缓存的数据值=数据库中的值缓存中本没有数据,数据库... 查看详情