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

RedisデータをMySQLに同期するための最良の戦略は何ですか?

    何もハックする必要はありません;)

    なぜmysqlのデータが必要なのか完全にはわかりません。私が知っていれば、もっと適切な答えがあるかもしれません。いずれにせよ、一般的な答えとして、redisキースペース通知を使用できます

    キーでコマンドHSET、HMSET、HDEL、およびDELをサブスクライブできるため、キーが削除されるか、ハッシュ値が設定または削除されるたびに通知を受け取ることができます。

    通知を見逃した場合、不整合が生じることに注意してください。そのため、たまにSCANコマンドを使用してすべてのキーを調べ、更新が必要かどうかmysqlを確認することができます。

    別の戦略は、2つの別々の構造を維持することです。 1つは値を含むハッシュで、もう1つは更新のタイムスタンプでソートされたすべての値のZSETです。両方の構造を最新の状態に保つための最良の方法は、ハッシュとzsetをアトミックに操作する2つまたは3つのluaスクリプト(挿入/更新と削除)を作成することです。

    次に、前回の同期操作よりもタイムスタンプが高い要素についてZSETに定期的にクエリを実行し、更新されたすべてのキーを取得し(2番目のZSETをそれら専用に保持する場合を除き、削除されたキーが含まれます)、キーですべての要素を取得し、mysqlに同期します。

    それがあなたのために働くことを願っています!



    1. 誰かがCouchDBとさまざまなオフライン実装(PouchDB)を試しましたか?

    2. node.jsからmongodbに接続するときのECONNREFUSEDエラー

    3. MongoDBAtlasを使用してクラウドにデータベースクラスターを作成する

    4. maxdistanceとMongoDBに使用するユニット?