保持MySQL和Redis的一致性

       目前相当系统架构使用的是mysql和redis组合来实现,这两者在使用过程中对不同场景会对数据一致性有不一样的要求,大家都知道mysql主要做持久化数据的,Redis只读数据的,大家都知道redis用来处理高并发情况的多所以我就稍微根据自己项目经验总结下

     方案一. 

对于实时要求不高的数据,将这些数据放入Redis,请求来了直接查询Redis,比如用户的基本信息,排行榜信息。针对那些强实时性的业务例如虚拟货币、物品购买件数等等,则直接穿透Redis至MySQL上,等到MySQL上写入成功,再同步更新到Redis上去。这样既可以起到Redis的分流大量查询请求的作用,又保证了关键数据的一致性。

     方案二. 

如果写请求比较多时,则直接写入redis中,隔时将批量写入的请求,同步到mysql中,如果写入请求不多,可以写入redis后,马上同步到mysql中,这两种方式都有利弊,开发者工具实际业务场景来选择

     方案三.

 阿里巴巴的一款开源框架canal,提供了一种发布/ 订阅模式的同步机制,通过该框架我们可以对MySQL的binlog进行订阅,这样一旦MySQL中产生了新的写入、更新、删除等操作,就可以把binlog相关的消息推送至Redis,Redis再根据binlog中的记录,对Redis进行更新。值得注意的是,binlog需要手动打开,并且不会记录关于MySQL查询的命令和操作。
 

本人项目经验有限,同时也查看了很多大牛的博客看了相关的解决方案,总结出的3个经验,不一定是完善的,还请大家相互分享技术经验

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值