是否有其他方式將大數據從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