redis等缓存和mysql的数据同步问题解决思路

如何解决redis等缓存和mysql的数据同步问题? 在什么时机存储到mysql呢?

 

一般方式:

先更新数据库,再更新缓存

缺点:会触发分布式事务问题,两步操作必须同时完成

懒加载方式:

先删除缓存,再更新数据库,查询时再添加到缓存中

缺点:高并发情况下有小概率出现将旧数据添加到缓存中

 

先更新数据库,再删除缓存,

缺点:基本没什么大问题

 

异步方式:


可以在一段时间后定时存储到mysql.
缺点:这个方案是以前老的方案, 这种情况如果服务器挂了, 有可能会导致数据丢失。

 

可以异步存储数据(再开个进程)。
缺点:这个自己做有点复杂了, 可以交给memcach缓存做。

 

更好的解答:

1.更新到缓存服务,由缓存服务异步更新到mysql。
2.直接更新到mysql,并删除掉缓存服务的数据。

 

比较好的方案::Read/Write Through Pattern

要点:更新数据由缓存服务来做。
Write Back套路,一句说就是,在更新数据的时候,只更新缓存,不更新数据库,而我们的缓存会异步地批量更新数据库。这个设计的好处就是让数据的I/O操作飞快无比(因为直接操作内存嘛 ),因为异步,write backg还可以合并对同一个数据的多次操作,所以性能的提高是相当可观的。

详解 https://coolshell.cn/articles/17416.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值