当前位置:网站首页>Redis和Mysql数据同步的两种方案
Redis和Mysql数据同步的两种方案
2022-08-03 09:16:00 【m0_54853420】
**
利用数据库本身进行手动同步
**
具体操作
- 在MySQL中对要操作的数据设置触发器Trigger,监听操作
- 客户端(NodeServer)向MySQL中写入数据时,触发器会被触发,触发之后调用MySQL的UDF函数
- UDF函数可以把数据写入到Redis中,从而达到同步的效果
好处
同步效率比较高,一般结合延迟双删和缓存超时策略进行手动同步
延迟双删和缓存超时简介
首先删除redis中的数据,然后更新数据库中的数据,最后过一段时间(大概一分钟)再对redis中数据做一次删除.这样就可能尽量保证我们的redis数据被删掉,但极端情况下,旧数据还是没有删掉,所以我们设计让它的过期时间短一点,这样就算没删掉也可以很快过期.
利用Canal进行数据同步
Canal简介
阿里旗下,用来监控数据库内部数据变化的软件.
Canal会伪装成mysql的备份机.当mysql进行数据操作以后,会将记录记载到日志中,同时发送给备份机,当canal接收到日志数据后,就会进行后续数据同步工作.
数据更新(以首页广告更新为例)
当mysql内部的数据发生改变之后.我们的数据监控微服务,就可以根据canal获取到最新更新的数据.,将我们的position字段的值提取出来(代表当前广告的位置),之后数据监控的微服务就会把这个值发送到rabbitmq上,rabbitmq收到这个消息后,就会把这个消息保存到自己的内存中.这时运营的微服务就会从rabbitmq中把值拿出来,调用nginx中的更新数据的lua脚本进行数据更新.
先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- Redis cluster concept and construction
- 【LeetCode】622. Design Circular Queue
- pytorch one-hot tips
- Unity关于编辑器扩展自定义标签,方便扩展Inspector
- 深度学习之 10 卷积神经网络2
- 多媒体数据处理实验1:算术编码
- 兔起鹘落全端涵盖,Go lang1.18入门精炼教程,由白丁入鸿儒,全平台(Sublime 4)Go lang开发环境搭建EP00
- Exception: Dataset not found.解决办法
- LeetCode 每日一题——622. 设计循环队列
- 10 minutes to get you started chrome (Google) browser plug-in development
猜你喜欢
随机推荐
别人都不知道的“好用”网站,让你的效率飞快
Guava的缓存
mysqldump导出提示:mysqldump [Warning] Using a password on the command line interface can be insecure
验证浮点数输入
scala reduce、reduceLeft 、reduceRight 、fold、foldLeft 、foldRight
015-Balanced binary tree (1)
软体按摩机器人驱动器的设计与仿真
gpnmb+ gpnmb-AT2 cell空转映射 上皮细胞的空转映射
Automated test browser driver download version
Guava-字符串工具
SQL每日一练(牛客新题库)——第5天:高级查询
机器学习(公式推导与代码实现)--sklearn机器学习库
Partition table (1)
好用的插件
Gauva的ListenableFuture
基于二次型性能指标的燃料电池过氧比RBF-PID控制
chrome F12 network 保留之前请求信息
Flink Yarn Per Job - 启动AM
MySQL1
STP普通生成树安全特性— bpduguard特性 + bpdufilter特性 + guard root 特性 III loopguard技术( 详解+配置)









