sql >> データベース >  >> NoSQL >> Redis

redisデータをMySQLに移動するためのより高速な方法

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




    1. ソートされたセットとuidを保存するための最良の方法をRedisします

    2. ANDとORの両方でmongodbクエリ

    3. SQLで数値をフォーマットする方法

    4. SQL RPAD()