数据库同步到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数据同步解决方案相关推荐

  1. redis淘汰策略面试题_redis有哪些数据淘汰策略

    redis内存数据数据集大小升到一定大的时候,就会实行数据淘汰策略(回收策略). 1,volatile-lru:从已设置过期时间的哈希表(server.db[i].expires)中随机挑选多个key ...

  2. redis和mysql实现原理_redis和mysql结合数据一致性方案

    缓存读: 缓存由于高并发高性能,已经被广泛的应用.在读取缓存方面做法一致.流程如下: 写缓存: 1.先更新数据库,再更新缓存 2.先更新数据库,再删除缓存. (1).先更新数据库,再更新缓存 这套方案 ...

  3. redis哨兵集群数据迁移_redis集群数据迁移—redis-migrate-tool神器

    往常大家对数据的迁移可能会想到mysql.mongodb.oracle等数据库的迁移,对redis数据的迁移可能比较少,因为redis平时都是用来做缓存用,里面的数据无所谓.因为某些特殊场景下,red ...

  4. redis mysql主从同步_Redis主从数据库同步

    Redis主从同步原理-SYNC 和MySQL主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况.为了分担读压力,Redis支持主从复制,Redis的主从结构可以 ...

  5. redis配置mysql缓存_Redis做mysql的缓存服务器

    一redis简介:redis 是一个高性能的 key-value 数据库. redis 的出现,很大程度补偿了memcached 这类 keyvalue 存储的不足,在部分场合可以对关系数据库起到很好 ...

  6. 【数据库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 客户端:命令行 ...

  7. php mysql两个表合并_php操作mysql两个数据库中表的数据同步

    题记: 我们开发当中经常会遇到,数据同步.比如将teaching数据库中area表的数据同步到study数据库中zone表中. 备注:这两个数据库不同,数据表名字也不同,但数据表的结构相同.不同表结构 ...

  8. mysql二进制日志文件差不多_mysql数据同步-基于二进制日志文件和position复制点的方式...

    mysql的binlog日志有三种格式,分别为statement,mixed,以及row. 1.Statement:每一条会修改数据的sql都会记录在binlog中 优缺点:1)不用记录每一行的变化, ...

  9. esjava 同步mysql_Elasticsearch和mysql数据同步(elasticsearch-jdbc)

    1.介绍 对mysql.oracle等数据库数据进行同步到ES有三种做法:一个是通过elasticsearch提供的API进行增删改查,一个就是通过中间件进行数据全量.增量的数据同步,另一个是通过收集 ...

最新文章

  1. CentOS5.8 RHCS配置
  2. 扬言要干掉 RESTful API 的 GraphQL 是什么鬼?
  3. Python老司机给上路新手的3点忠告
  4. nginx在linux下是服务吗,[Linux]如何给Nginx添加服务
  5. 杭州软件测试培训有用吗,杭州软件测试培训靠谱吗
  6. Common Techniques to Improve Shadow Depth Maps
  7. 当html里语义化,HTML5语义化
  8. ifpc币_劳力士手表价格表一览表
  9. 工商银行的计算机网络布线,工商银行利用计算机网络开展了哪些业务?
  10. 西门子MM4系列变频器反转功能的具体使用方法和注意事项
  11. WPS 设置多级标题
  12. c语言去尾法和进一法的例子,进一法或去尾法在生活中的应用教学案例.doc
  13. 手机浏览器怎么查看html,手机浏览器网页收藏在哪里查看
  14. 如何计算平台的可用性?
  15. html黑科技导入res,css黑科技
  16. CMU CSAPP : Decoding lab
  17. 教学|3DSMAX制作爆炸粒子的技巧,游戏特效这么做
  18. Docker 修改容器端口
  19. 人工智能中的顶级期刊
  20. PETS 5 考试经验

热门文章

  1. Access denied for use ‘xxxxx‘@‘localhost‘ (suing password : YES)解决方案详细操作流程
  2. c语言|||博客作业03
  3. 让我们在LED灯光下聚会
  4. 以可爱风为主题的PPT模板,专门为小孩子打造的PPT模板
  5. 防百度云APP下载列表圆形进度条
  6. 噬血代码进不了游戏_《噬血代码》新情报:游戏难度虽高,但练级可以解决
  7. JAVA——如何写一个简单的聊天框
  8. C语言常见问题——数组初始化的四种方法
  9. Mac下的HALCON安装与License文件下载
  10. oppo手机用计算机充满电,OPPO手机的充电小技巧,打开这个开关,让你充一次电可玩三天...