更快的方法redis的数据移动到MySQL(The faster method to move re

2019-07-31 02:02发布

我们有大型购物商场及产品交易系统。 我们曾面临很多问题与MySQL这么少的R&d后,我们计划使用Redis的,我们开始在我们的系统集成Redis的。 在此之后以前直接进入数据库,现在我们已经搬进Redis的系统

  1. 用户购物车的详细信息
  2. 分支机构点击跟踪记录
  3. 我们有产品处理用户数据。
  4. 其他网站的统计信息。

我不仅保存我写crons其时间间隔在移动MySQL数据Redis的数据在Redis的系统中的数据。 这就是我所面临的问题的重点。 娄点我期待的解决方案

  1. 是他们的任何其他方式从Redis的大数据转储到MySQL?
  2. Redis的失败,在我们的文件存储数据等是可以直接存储数据到MySQL数据库?
  3. Redis的是在使用我能避免这样排队系统的crons任何触发系统?

Answer 1:

是他们的任何其他方式从Redis的大数据转储到MySQL?

Redis的具有可能性(使用bgsave),以产生在非阻挡和一致的方式将数据转储。

https://github.com/sripathikrishnan/redis-rdb-tools

你可以使用Sripathi克里希南著名的包解析Python中的Redis的转储文件(RDB),和MySQL实例脱机填充。 或者你也可以转换Redis的转储到JSON格式,并要填充MySQL的任何语言编写脚本。

如果你想Redis的实例的完整数据复制到MySQL这个解决方案是唯一感兴趣。

是否有Redis的,我可以用它来避免像排队系统的crons任何触发系统?

Redis的没有触发的概念,但没有什么能够阻止你发布事件队列的Redis每次的东西必须被复制到MySQL。 例如,而不是:

# Add an item to a user shopping cart
RPUSH user:<id>:cart <item>

你可以执行:

# Add an item to a user shopping cart
MULTI
RPUSH user:<id>:cart <item>
RPUSH cart_to_mysql <id>:<item>
EXEC

在MULTI / EXEC块使得它的原子和一贯的。 然后你只需要编写一个小守护在cart_to_mysql队列的项目等着(使用BLPOP命令)。 对于每个取出的项目时,守护进程来从Redis的相关数据,并填充MySQL实例。

Redis的失败,在我们的文件存储数据等是可以直接存储数据到MySQL数据库?

我不知道我理解这里的问题。 但是,如果你使用上面的解决方案,Redis的更新和MySQL更新之间的延时将会是相当有限的。 所以,如果Redis的失败,你只会失去了最后的操作(与基于cron作业的解决方案)。 当然,不可能有在数据的传输100%的一致性虽然。



文章来源: The faster method to move redis data to MySQL