Redis から MySQL に大きなデータをダンプする他の方法はありますか?
Redis には、(bgsave を使用して) 非ブロッキングで一貫した方法でデータのダンプを生成する可能性があります。
https://github.com/sripathikrishnan/redis-rdb-tools
Sripathi Krishnan の有名なパッケージを使用して、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% の一貫性を持つことは不可能です。