この記事では、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つのルーティング許可制御メソッドを実装しています
目次MySQL インデックス最適化ページングの調査ケース1ケース2 MySQL インデックス最適化ペ...
1. mysqlコマンドをインポートするmysql コマンドのインポート構文は次のとおりです。 my...
一昨日、本番環境でGROUP_CONCAT関数を使用して選択したデータが切り捨てられ、最大長が102...
1. まず、よく使われるMySQL関数をいくつか紹介しますRAND() は 0 から 1 (0<...
vue-routerには2つのモードがありますハッシュモード履歴モード1. シングルページアプリケー...
この記事では、MySQL のスロー クエリ操作について例を挙げて説明します。ご参考までに、詳細は以下...
以前は、スクリプトは HTML 内のどこにでも配置できると思っていましたが、今日、要件に取り組んでい...
目次1 配列のフラット化とは何ですか? 2 JS標準ライブラリの配列フラット化メソッド3 フラットメ...
1. Mariaソースを追加する vi /etc/yum.repos.d/MariaDB.repo...
MySQL には、msi インストールと zip 解凍の 2 つのインストール方法があります。 zi...
CSS 3 アニメーションの例 - タブの背景切り替えの動的効果、具体的なコードは次のとおりです。 ...
数日前に CentOS8 がリリースされました。8 の最初のバージョンですが、今日は VM12 に ...
MySQL 文字列の連結、インターセプト、置換、および検索位置。よく使用される文字列関数:関数例示す...
とあるサイトからレンタルした仮想マシンの有効期限が近づいており、更新料が200元以上かかります。Al...
現象の説明:プロジェクトでは、Springboot を使用して Web プロジェクトを開始します。起...