この記事では、MySQLとRedisキャッシュを同期するための2つのソリューションを紹介します。
1. ソリューション 1 (UDF)シナリオ分析: MySQLデータベースでデータ操作を実行すると、対応するデータが同時にRedisに同期されます。Redisに同期した後、クエリ操作はRedisから検索されます。 プロセスはおおよそ次のようになります。 MySQLで操作するデータにトリガーを設定し、操作を監視する クライアント(NodeServer)がMySQLにデータを書き込むと、トリガーがトリガーされ、トリガー後にMySQL UDF関数が呼び出されます。 UDF関数はRedisにデータを書き込んで同期効果を実現できる ソリューション分析:
デモケース以下はMySQLテーブルです 以下はUDFの解析コードです 対応するトリガーを定義する 2. ソリューション2(binlogの解析)ソリューション 2 を紹介する前に、まず次の図に示すように、MySQL レプリケーションの原理を紹介します。
解決策2は次のとおりです。
たとえば、クラウド データベース インスタンスの分析は次のとおりです。 クラウド データベースとローカル データベースはマスターとスレーブの関係にあります。クラウド データベースは主に書き込みサービスを提供するプライマリ データベースであり、ローカル データベースはプライマリ データベースからデータを読み取るセカンダリ データベースです。 ローカル データベースはデータを読み取った後、Bin ログを解析し、同期のためにデータを Redis に書き込みます。その後、クライアントは Redis からデータを読み取ります。 この技術的ソリューションの難しさは、MySQL Bin Log をどのように解析するかにあります。ただし、これには、binlog ファイルと MySQL に関する非常に深い理解が必要です。同時に、binlog は Statement/Row/Mixed レベルなど複数の形式で存在するため、同期を実現するために binlog を分析する作業負荷は非常に大きくなります。 キャナルオープンソーステクノロジーCanal は、純粋な Java で開発された Alibaba のオープンソース プロジェクトです。データベースの増分ログ分析に基づいて、増分データのサブスクリプションと消費を提供します。現在は主にMySQLをサポートしています(mariaDBもサポートしています) オープンソースの参照アドレスは https://github.com/liukelin/canal_mysql_nosql_sync です。 仕組み(MySQL レプリケーションを模倣):
建築: サーバーは、JVMに対応するチャネル実行インスタンスを表します。 インスタンスはデータ キューに対応します (1 つのサーバーは 1..n 個のインスタンスに対応します) インスタンスモジュール:
一般的な解析プロセスは次のとおりです。
Canclの詳細については、Baiduで検索してください。 以下は動作トポロジー図です MySQL テーブルの同期は責任連鎖モデルを採用しており、各テーブルはフィルターに対応します。たとえば、zvsync で使用されるクラスの設計は次のとおりです。 以下は、具体的な zvsync で使用されるクラスです。テーブルが追加または削除されるたびに、直接追加または削除できます。 3. 追加この記事の上記の紹介は、MySQL からキャッシュへの同期に関するものです。しかし、実際の開発では、次のような解決策を使用する人もいます。
これで、MySQL と Redis Cache の同期ソリューションに関するこの記事は終了です。MySQL と Redis Cache の同期の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Vueは2つのルーティング許可制御メソッドを実装しています
序文Docker イメージは Dockerfile といくつかの必要な依存関係で構成され、Docke...
半透明の境界線結果: 実装コード: <div> 半透明の境界線が見えますか? </...
目次動作原理:ブラウザは何をするのですか?ホストファイル index.htmlメイン.jsその他のベ...
一般的な開発ニーズとして、要素の一部を必要になるまで折りたたんでおきたいことが挙げられます。 Boo...
Bツリーインデックス異なるストレージ エンジンでは、異なるストレージ構造を使用する場合もあります。た...
1. Reactコンポーネントを定義する2つの方法1. 関数コンポーネント。単純な関数コンポーネント...
について最近、Vue を学習する過程で、基本的な知識の練習と強化を目的として、Qunar.com の...
InnoDB インデックスの物理構造すべての InnoDB インデックスは Btree インデックス...
HTMLのdivブロックを使用していて、ブロックの中央をしっかりと接続できず、解決できない場合1. ...
問題の再現HTML を使用して編集する場合、特殊記号によってエラーが表示されることが多く、極端な場合...
この記事の例では、参考のためにMySQLトリガーを作成するための具体的なコードを共有しています。具体...
目次1. Linuxホスト名を設定するクライアントホストを構成するサーバーホストを構成する2. ホス...
この記事の例では、カルーセルカルーセルを実装するためのJSの具体的なコードを参考までに共有しています...
1. 単一行オーバーフロー1. 1 行がオーバーフローした場合、超過部分は表示されます...または、...
1: グループ化関数の記述順序 1 選択 ... 2 から ... 3 どこで ... 4 グループ...