我们有大型购物商场及产品交易系统。 我们曾面临很多问题与MySQL这么少的R&d后,我们计划使用Redis的,我们开始在我们的系统集成Redis的。 在此之后以前直接进入数据库,现在我们已经搬进Redis的系统
- 用户购物车的详细信息
- 分支机构点击跟踪记录
- 我们有产品处理用户数据。
- 其他网站的统计信息。
我不仅保存我写crons其时间间隔在移动MySQL数据Redis的数据在Redis的系统中的数据。 这就是我所面临的问题的重点。 娄点我期待的解决方案
- 是他们的任何其他方式从Redis的大数据转储到MySQL?
- Redis的失败,在我们的文件存储数据等是可以直接存储数据到MySQL数据库?
- Redis的是在使用我能避免这样排队系统的crons任何触发系统?
是他们的任何其他方式从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%的一致性虽然。