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%の一貫性を持たせることはできません。