この記事では、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つのルーティング許可制御メソッドを実装しています
目次概要1. store.jsを定義する2. store.js を使用するコンポーネント3. 成果を...
js コードをデバッグするには、コード内にデバッガーを記述するか、Chrome で毎回ブレークポイン...
1. インストールスクリプト(composer-setup.php)を現在のディレクトリにダウンロー...
MySQL パフォーマンスの最適化MySQL はインターネット企業で広く使用されており、MySQL ...
この記事では、 Dockerコンテナ ( docker-composeを使用してオーケストレーション...
目次アルゴリズム戦略単一ノードの差分配列ノードの差分キー値の使用要件アルゴリズム戦略React の調...
1. 設置環境1. HUAWEI mate x CPU i5 82500u、8g メモリ、独立グラフ...
オリジナル: http://developer.yahoo.com/performance/rule...
スケジュールされたタスク エディターを開きます。Cent は、デフォルトで vim を使用して直接開...
この記事では、IP入力ボックスを実装するための react+antd.3x の具体的なコードを参考ま...
コードをコピーコードは次のとおりです。 jQuery.cookie = 関数(名前、値、オプション)...
みなさんこんにちは、今日はウェブフロントエンドのHTMLを見ていたら、inputタグのtype属性が...
操作前に必ずお読みください:注意:管理に rancher を使用する場合は、k8s クラスターが構築...
環境: MacOS_Cetalina_10.15.1、Mysql8.0.18、Docker_2.0....
<tfoot> タグは、テーブル フッターのスタイルを定義するために使用されます。基本構...