redis与mysql数据同步_Redis与MySQL数据同步解决方案
数据库同步到Redis
我们大多倾向于使用这种方式,也就是将数据库中的变化同步到Redis,这种更加可靠。Redis在这里只是做缓存。
方案1
做缓存,就要遵循缓存的语义规定:
读:读缓存redis,没有,读mysql,并将mysql的值写入到redis。
写:写mysql,成功后,更新或者失效掉缓存redis中的值。
对于一致性要求高的,从数据库中读,比如金融,交易等数据。其他的从Redis读。
这种方案的好处是由mysql,常规的关系型数据库来保证持久化,一致性等,不容易出错。
方案2
这里还可以基于binlog使用mysql_udf_redis,将数据库中的数据同步到Redis。
但是很明显的,这将整体的复杂性提高了,而且本来我们在系统代码中能很轻易完成的功能,现在需要依赖第三方工具,而且系统的整个边界扩大了,变得更加不稳定也不好管理了。
Redis同步到数据库
也就是说将Redis中的数据变化同步到数据库,那么这里是将Redis做为db,而真的db,数据库只作为备份。(注意,这里是一种不同看待事物的方式)。
这样做的好处是:大大减小了数据库的压力,但是用redis做内存数据库,状态很不稳定。
虽然redis也有持久化机制,但是redis集群宕机后的重启,数据加热都很耗时。
另一方面,随着大量插入或者更新导致redis持久化操作会严重拖累作为内存KV数据库的优势。
方案1
将redis变更复制一份,丢到队列中,给mysql消费。
很明显这种方案,只能保证最终一致性,而且变更数据复制,队列维护,这些杂七杂八的东西太复杂,抛弃。
具体做法是:写redis时,同时将数据写到redis维护的另外一个队列中,但这样又要增加内存消耗了。
其实还有一种方式是使用redis的pipeline通知机制,但是redis是不保证的一定通知到的(得到被通知方的ack)。
方案2
定时刷新redis中的最新数据到mysql。
很明显的,无论定时任务的间距有多小,都会留下时间缝隙,如果发生宕机,故障等都会造成数据的不一致性。
虽然可以通过比较redis和数据库中的数据,同步那些需要同步的变化数据,但是会加大计算量和程序的复杂度。
介绍就到这里,请根据需求酌情选择方案!
redis与mysql数据同步_Redis与MySQL数据同步解决方案相关推荐
- redis淘汰策略面试题_redis有哪些数据淘汰策略
redis内存数据数据集大小升到一定大的时候,就会实行数据淘汰策略(回收策略). 1,volatile-lru:从已设置过期时间的哈希表(server.db[i].expires)中随机挑选多个key ...
- redis和mysql实现原理_redis和mysql结合数据一致性方案
缓存读: 缓存由于高并发高性能,已经被广泛的应用.在读取缓存方面做法一致.流程如下: 写缓存: 1.先更新数据库,再更新缓存 2.先更新数据库,再删除缓存. (1).先更新数据库,再更新缓存 这套方案 ...
- redis哨兵集群数据迁移_redis集群数据迁移—redis-migrate-tool神器
往常大家对数据的迁移可能会想到mysql.mongodb.oracle等数据库的迁移,对redis数据的迁移可能比较少,因为redis平时都是用来做缓存用,里面的数据无所谓.因为某些特殊场景下,red ...
- redis mysql主从同步_Redis主从数据库同步
Redis主从同步原理-SYNC 和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以 ...
- redis配置mysql缓存_Redis做mysql的缓存服务器
一redis简介:redis 是一个高性能的 key-value 数据库. redis 的出现,很大程度补偿了memcached 这类 keyvalue 存储的不足,在部分场合可以对关系数据库起到很好 ...
- 【数据库1】mysql,DDL/DML,DQL,外键约束,多表/子查询,事务,登陆,连接池,jdbc,redis,crontab,ftp,oracle,数据交换/存储/收集
文章目录 1.mysql安装:存储:集合(内存:临时),IO流(硬盘:持久化) 1.1 服务端:双击mysql-installer-community-5.6.22.0.msi 1.2 客户端:命令行 ...
- php mysql两个表合并_php操作mysql两个数据库中表的数据同步
题记: 我们开发当中经常会遇到,数据同步.比如将teaching数据库中area表的数据同步到study数据库中zone表中. 备注:这两个数据库不同,数据表名字也不同,但数据表的结构相同.不同表结构 ...
- mysql二进制日志文件差不多_mysql数据同步-基于二进制日志文件和position复制点的方式...
mysql的binlog日志有三种格式,分别为statement,mixed,以及row. 1.Statement:每一条会修改数据的sql都会记录在binlog中 优缺点:1)不用记录每一行的变化, ...
- esjava 同步mysql_Elasticsearch和mysql数据同步(elasticsearch-jdbc)
1.介绍 对mysql.oracle等数据库数据进行同步到ES有三种做法:一个是通过elasticsearch提供的API进行增删改查,一个就是通过中间件进行数据全量.增量的数据同步,另一个是通过收集 ...
最新文章
- CentOS5.8 RHCS配置
- 扬言要干掉 RESTful API 的 GraphQL 是什么鬼?
- Python老司机给上路新手的3点忠告
- nginx在linux下是服务吗,[Linux]如何给Nginx添加服务
- 杭州软件测试培训有用吗,杭州软件测试培训靠谱吗
- Common Techniques to Improve Shadow Depth Maps
- 当html里语义化,HTML5语义化
- ifpc币_劳力士手表价格表一览表
- 工商银行的计算机网络布线,工商银行利用计算机网络开展了哪些业务?
- 西门子MM4系列变频器反转功能的具体使用方法和注意事项
- WPS 设置多级标题
- c语言去尾法和进一法的例子,进一法或去尾法在生活中的应用教学案例.doc
- 手机浏览器怎么查看html,手机浏览器网页收藏在哪里查看
- 如何计算平台的可用性?
- html黑科技导入res,css黑科技
- CMU CSAPP : Decoding lab
- 教学|3DSMAX制作爆炸粒子的技巧,游戏特效这么做
- Docker 修改容器端口
- 人工智能中的顶级期刊
- PETS 5 考试经验
热门文章
- Access denied for use ‘xxxxx‘@‘localhost‘ (suing password : YES)解决方案详细操作流程
- c语言|||博客作业03
- 让我们在LED灯光下聚会
- 以可爱风为主题的PPT模板,专门为小孩子打造的PPT模板
- 防百度云APP下载列表圆形进度条
- 噬血代码进不了游戏_《噬血代码》新情报:游戏难度虽高,但练级可以解决
- JAVA——如何写一个简单的聊天框
- C语言常见问题——数组初始化的四种方法
- Mac下的HALCON安装与License文件下载
- oppo手机用计算机充满电,OPPO手机的充电小技巧,打开这个开关,让你充一次电可玩三天...