文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2024-04-02 19:55

关注

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

在高并发的业务场景下,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.del(key)操作,并且设定合理地超时时间

  1. 先删缓存

  2. 再写数据库

  3. 休眠一段时间

  4. 再删缓存

设置缓存的过期时间

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

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

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯