iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >如何保持MySQL和Redis中的数据一致
  • 393
分享到

如何保持MySQL和Redis中的数据一致

2024-04-02 19:04:59 393人浏览 安东尼
摘要

这篇文章给大家介绍如何保持Mysql和Redis中的数据一致,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在高并发的业务场景下,mysql和Redis的数据一致性就显得很重要了,多次访

这篇文章给大家介绍如何保持MysqlRedis中的数据一致,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

高并发的业务场景下,mysql和Redis的数据一致性就显得很重要了,多次访问Mysql就会导致奔溃或者延缓速度,而缓存Redis过多也会出问题,那就是丢数据,存着存着,数据就丢了

Redis 在互联网行业中使用最为广泛。在很多时候也被称为“内存数据库”,它集合了缓存和数据库的优势,但并非开启持久化和主备同步机制就可以高枕无忧。

写入数据库成功,即让缓存失效,下一次读取时再缓存。这是缓存的实时策略。

架构设计的角度思考:缓存就是缓存,缓存数据会随时丢失,缓存存在的目的是拦截到数据库的请求,相比数据的可靠性、一致性,还是吞吐量、稳定性优先。

在考虑数据一致性的问题上由三种刷新策略

  1. 实时策略

  2. 异步策略

  3. 定时策略

实时策略是最常用的策略,能够让用户有最好的体验,但是一旦数据量过大就会出现,数据苦往往会受不了

异步策略适用于,数据量大,但是数据并不重要,因为可能会导致脏数据或者数据丢失

定时策略适用于,数据量大,数据也很重要的情况下,这也是最稳定的方案

读取的过程,应用程序先从 cache 取数据,没有得到,则从数据库中取数据,成功后,放到缓存中。如果命中,应用程序从 cache 中取数据,取到后返回。

写入的过程,把数据存到数据库中,成功后,再删除缓存,删除后下次读取的时候,会被写入缓存。

从用户体验的角度,应该数据库有了写入,就马上废弃缓存,触发一次数据库的读取,从而更新缓存。

然而,这和高并发就矛盾了——如果所有的都实时从数据库里面读取,高并发场景下,数据库往往受不了。

在读取写入数据时,适用定时策略一般不会出问题

  1. MySQL持久化数据,Redis只读数据

  2. MySQL和Redis处理不同的数据类型
    MySQL处理实时性数据,Redis处理对实时性要求并不是很高的数据。在并发不高的情况下,读取操作优先读取redis,不存在的话再去访问MySQL,并把读取到的数据写回Redis中;写入操作直接写MySQL,然后后再写入Redis。在并发高的情况下,读取操作和上面一样,写入操作则使用异步写入,先写入Redis后直接返回,然后定时定期的写入MySQL

而一旦涉及到更新数据,就容易出现缓存和数据库之间的数据一致性的问题,不管是先写入数据库再删除缓存,还是先删除缓存再写入数据库,都有可能出现数据不一致的情况,例如:

  • 先写入数据库,再删除缓存前,线程宕机了,没有删除掉缓存,就会出现数据不一致的情况

  • 先删除Redis,还没来得及写入数据库,另外一个线程就来读取,发现缓存为空,这个时候就会跑去数据库读取数据写入缓存,这个时候缓存中的数据就是脏数据

因为写入和读取是并发的,没有办法保证顺序,就会出现缓存和数据库的数据是不一致的问题,这时候就可以使用

延时双删策略

在写库前后都进行Redis.del(key)操作,并且设定合理地超时时间

  1. 先删缓存

  2. 再写数据库

  3. 休眠一段时间

  4. 再删缓存

设置缓存的过期时间

理论上来讲,设置缓存过期时间,是保证最终一致性的解决方案。所有的写入操作以数据库为准,只要到达缓存过期时间,则后面的读请求自然会从数据库中读取新值然后回填缓存

关于如何保持MySQL和Redis中的数据一致就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

您可能感兴趣的文档:

--结束END--

本文标题: 如何保持MySQL和Redis中的数据一致

本文链接: https://www.lsjlt.com/news/60314.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何保持MySQL和Redis中的数据一致
    这篇文章给大家介绍如何保持MySQL和Redis中的数据一致,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。在高并发的业务场景下,MySQL和Redis的数据一致性就显得很重要了,多次访...
    99+
    2024-04-02
  • Redis 和 MySQL 如何保持数据一致性?
    在高并发的场景下,大量的请求直接访问MySQL很容易造成性能问题。所以,我们都会用Redis来做数据的缓存,削减对数据库的请求。但是,MySQL和Redis是两种不同的数据库,如何保证不同数据库之间数据的一致性就非常关键了。 一、导致...
    99+
    2023-09-16
    mysql redis
  • MySQL和Redis如何保证数据一致性
    MySQL与Redis都是常用的数据存储和缓存系统。为了提高应用程序的性能和可伸缩性,很多应用程序将MySQL和Redis一起使用,其中MySQL作为主要的持久存储,而Redis作为主要的缓存。在这种情况下,应用程序需要确保MySQL和Re...
    99+
    2023-08-22
    mysql redis 数据库
  • redis如何与最新的数据保持一致
    要保持Redis与最新的数据保持一致,可以通过以下几种方法:1. 频繁更新:在更新数据时,同时更新Redis中的对应数据。这样可以确...
    99+
    2023-08-24
    redis
  • redis怎样保持和数据库数据的一致性
    redis 与数据库数据一致性维护可以通过以下方式实现:定期数据同步使用 redis 发布/订阅机制使用 redis 事务使用 redis 持久化使用 redis sentinel 或 ...
    99+
    2024-04-19
    mysql redis 数据丢失 持久化存储
  • redis怎么和数据库保持一致性
    在实际应用中,Redis通常作为数据库的缓存层来提高访问速度,而不是直接用来和数据库保持一致性。但是如果确实需要保持Redis和数据...
    99+
    2024-04-03
    redis 数据库
  • redis宕机如何与数据库保持一致
    redis宕机与数据库保持一致的方法:在编写库前后都进行redis.del(key)操作,并设定超时时间,脚本代码:public void write(String key,Object data){ redis.delKey(key); ...
    99+
    2024-04-02
  • redis缓存如何与数据库保持一致
    保持 redis 缓存与数据库数据一致性至关重要。以下方法可实现数据一致性:1. 写入时更新缓存(立即更新 redis 缓存);2. 写入时检查缓存(将更新存储在队列中,后台进程更新 r...
    99+
    2024-04-19
    redis
  • mysql与redis如何保证数据一致
    MySQL和Redis是两种不同类型的数据库,它们在数据存储和数据处理方面有一些不同之处。在将它们结合使用时,需要考虑如何保证数据一...
    99+
    2024-04-18
    mysql redis
  • 如何保障redis缓存和mysql数据相一致
    如何保障 redis 缓存与 mysql 数据一致性?异步更新:通过消息队列进行更新,不阻塞应用程序。定期同步:使用定时作业定期同步数据,保持数据一致性。混合方法:结合异步和定期同步,兼...
    99+
    2024-04-19
    mysql redis
  • redis如何保证数据一致
    Redis通过以下方式来保证数据一致性:1. 写操作的原子性:Redis的写操作是原子性的,即对于一个键的写操作要么成功,要么失败,...
    99+
    2023-08-30
    redis
  • redis如何保证和数据库的一致性
    为了确保 redis 与数据库之间的数据一致性,可使用以下方法:事务性更新:将 redis 和数据库更新封装成原子事务,避免不一致。乐观锁:监视要更新的键,更新前检查键是否已修改,避免并...
    99+
    2024-04-20
    redis
  • redis和数据库数据保持一致的方法是什么
    保持Redis和数据库数据一致有几种方法: 使用消息队列:可以通过在数据库中的数据发生变化时将消息发送到消息队列中,然后在Red...
    99+
    2024-04-09
    redis 数据库
  • redis和mysql如何保证一致性
    保证 redis 和 mysql 一致性的方法有直接写入 mysql 和事务补偿机制:直接写入 mysql:通过触发器将 mysql 数据变更同步到 redis,保证一致性但性能较低;事...
    99+
    2024-04-20
    mysql redis
  • redis和数据库如何保证一致性
    redis 与数据库之间的数据一致性可以通过以下机制实现:1. 主从复制机制,通过异步复制实现一致性;2. 双写机制,同时向 redis 和数据库写入数据保持同步;3. 乐观锁,通过版本...
    99+
    2024-04-20
    redis 并发访问
  • redis缓存如何与数据库保持一致状态
    确保 redis 缓存与数据库一致的方法包括:1. 被动一致性定期同步;2. 增量同步;3. 主动一致性(订阅数据库事件);4. 使用分布式事务。选择方法取决于数据滞后容忍度、性能要求和...
    99+
    2024-04-20
    redis
  • Redis和MySQL怎么保持数据统一
    这期内容当中小编将会给大家带来有关Redis和MySQL怎么保持数据统一,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1.第一种方案:采用延时双删策略在写库前后都进行re...
    99+
    2024-04-02
  • redis和mysql数据一致性怎么保证
    为了确保 redis 和 mysql 之间的数据一致性,可以采用以下策略:1. 主从复制:利用 mysql 的复制功能,将 mysql 作为主数据库,并将数据同步到 redis 作为从数...
    99+
    2024-04-08
    mysql redis
  • redis如何保证数据一致性
    Redis 保证数据一致性的方法主要有以下几种: 主从复制:Redis 支持主从复制机制,通过将主节点的数据复制到备用的从节点上...
    99+
    2024-05-10
    redis
  • redis与mysql保持一致性的方法
    redis与mysql保持一致性的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!  redis与mysql保...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作