Redis如何实现与MySQL的同步?

在MySQL中修改了一条数据,Redis作为缓存,是如何知道这条数据被修改了?也即如何与MySQL进行同步的?#Java工程师#
全部评论
刚好笔记上记了 在一些高并发的场景中,使用 *** 可以减少对后端系统的负载,承担可大部分读的压力,可以大大提高系统的吞吐量,比如通常在数据库存储之前增加 *** 缓存 。 单个节点 *** 不能满足要求,就需要搭建分布式 Cache ;为了解决单个节点失效引起的抖动,分布式 *** 一般采用一致性 hash 的解决方案 。 对于可用性要求比较高的场景,每个节点都是需要有备份的。数据在 *** 和存储上都存有同一份备份,必然有一致性的问题,一致性比较强的,在更新数据库的同时,更新数据库 *** 。对于一致性要求不高的,可以去设置缓存失效时间的策略。 用在高速的写操作的场景中,平台中有些数据需要写入数据库,并且数据是分库分表的,但对数据的可靠性不是那么高,为了减少对数据库的写压力,可以采取批量写操作的方式。开辟一个内存区域,当数据到达区域的一定阀值时如80%时 , 批量flush。
点赞 回复
分享
发布于 2016-09-17 11:02
利用gearman分布式任务框架。 在mysql定义一个UDF函数,返回更新值。在mysql中写一个触发器,当有值更新,触发器触发gearman job server。gearnman会调用用户自己写的守护程序,对redis中的数据进行更新。
点赞 回复
分享
发布于 2016-09-17 12:55
阅文集团
校招火热招聘中
官网直投
租约机制可以吗?
点赞 回复
分享
发布于 2016-09-17 10:15
这个场景一般在dao层通知redis key失效吧……
点赞 回复
分享
发布于 2016-09-17 10:19
缓存同步这个就复杂了: 存在一个问题是先更新mysql还是先更新redis?这两个其实都会造成脏数据,***采用的是先更新数据库在更新redis,这里有篇文章 详细介绍了: http://lintanghui.com/2016/09/10/***.html?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io
点赞 回复
分享
发布于 2016-09-17 12:30
其实缓存是什么,楼主需要了解清楚,缓存是基于数据库之上的,在一般的,读写都是基于它来的,通过设置缓存失效时间来和后台的数据库进行同步,参考算法一般为LRU,也就是说它本身就是一个内存数据库,根据不同算法flush到后台,你说的情况,可能脱离了数据库orm层,直接裸实现读写分离,采用上面的gearman
点赞 回复
分享
发布于 2016-09-17 19:27
利用canal机制通过binlog同步
点赞 回复
分享
发布于 2020-05-20 20:45

相关推荐

点赞 21 评论
分享
牛客网
牛客企业服务