是否有其他方式将大数据从Redis转储到MySQL?
Redis有可能(使用bgsave)以非阻塞和一致的方式生成数据转储。
https://github.com/sripathikrishnan/redis-rdb-tools
你可以使用Sripathi克里希南著名的包解析Python中的Redis的转储文件(RDB),和MySQL实例脱机填充。或者您可以将Redis转储转换为JSON格式,并使用任何您想要填充MySQL的语言编写脚本。
如果您想将Redis实例的完整数据复制到MySQL中,此解决方案仅有趣。
Redis是否有任何可用于避免队列系统的cron的触发系统?
Redis没有触发器的概念,但没有什么能阻止你每次必须复制到MySQL时在Redis队列中发布事件。例如,而不是,:
# 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%的一致性是不可能的。
感谢4即时回复。 redis-rdb-tools看起来不错,让我试试。 – 2012-08-18 06:27:57