Redis与Mysql数据同步解决方案

Redis与Mysql数据同步解决方案

方案1(普通)

读:读redis,没有数据就读mysql,将MySQL数据保存到缓存中。
写:写mysql,同时让redis缓存失效(删除key,过期)
缺点:数据量巨大,更新频繁的数据写入无能为力。比如数量巨大,每个变跟状态又很频繁,这样很容易把数据库写挂。

方案2(binlog)

基于binlog使用mysql_udf_redis,将数据库中的数据同步到Redis。
缺点: mysql_udf_redis是有人实现的同步数据到Redis的功能,需要学习成本,第三方的插件不稳定。

方案3(MQ或定时任务)

  1. MQ.队列同步,变跟数据2份,使用消息队列,一份给Redis消费,一份给Mysql消费。
  2. 定时任务 后台定时任务,定时刷新Redis中信息到数据库。

缺点:怎么保证到数据库和到Redis中的状态一致性。就是假设一条修改数据,从队列写入到Mysql成功,但是写入到Redis失败,这种如何搞。还有就是需要一个消息队列,使用第三方的比如Kafka,RabbitMq等来实现,管理起来不方便,系统整体稳定性不行,而且只是这么个比较小的箱格数据信息同步。有点杀鸡用牛刀

你可能感兴趣的:(架构)