Redis は、おおまかに 2 つの方法でキャッシュを実装します:
1. スクリプトの同期:
1 . データベース データを redis/memcached に書き込む独自のスクリプトを作成します。 (推奨学習: Redis ビデオ チュートリアル )
2. これには、リアルタイムのデータ変更 (mysql 行のバイナリログのリアルタイム分析)、Alibaba のカナルへのバイナリ増分サブスクリプション、レイヤ データの損失/無効化後のキャッシュ データ同期回復の問題。
2. ビジネス層の実装:
1. 最初に nosql キャッシュ層を読み取り、データがない場合は、mysql 層を読み取り、データを nosql に書き込みます。
2. nosql 層は、マルチノード分散 (一貫性のあるハッシュ) だけでなく、ノード障害後の代替 (隣接する代替ノードを見つけるためのマルチ層ハッシュ) にも対応しており、データ ショックも復元されています。
データベース キャッシュの Redis 実装の分析:
従来の静的キャッシュ方法 (Memocached、ファイル システムなど) を依然として選択している場合、非常に急速に変化するデータの場合。 ) データの表示には、キャッシュ アクセスで多くのオーバーヘッドが発生する可能性があり、ニーズを十分に満たすことができません。Redis のようなメモリベースの NoSQL データベースは、リアルタイム データのコンテナとして機能するのに非常に適しています。
ただし、多くの場合、データの信頼性が求められます。MySQL をデータ ストレージとして使用すると、メモリの問題によるデータ損失が発生しません。同時に、リレーショナル データベースの特性を利用して多くの機能を実装することもできます。したがって、MySQL をデータ ストレージ エンジンとして使用し、Redis をキャッシュとして使用できるかどうかを考えるのは自然なことです。
MySQL から Redis へのデータ レプリケーション スキームには、MySQL であっても Redis であっても、独自のデータ同期メカニズムがあります。より一般的に使用される MySQL マスター/スレーブ モードは、マスターのバイナリ ログを分析するスレーブ側によって実装されるため、データ レプリケーションは実際にはこれは非同期プロセスですが、サーバーがすべて同じイントラネット上にある場合、非同期の遅延はほとんど無視できます。
理論的には、同じ方法を使用して MySQL binlog ファイルを分析し、データを Redis に挿入できます。
そこで、ここでは開発コストが低い方法を選択し、すでに比較的成熟した MySQL UDF を借用し、まず MySQL データを Gearman に入力し、次に自作の PHP Gearman Worker を通じてそのデータを Gearman に同期します。 。 binlogを解析する方法と比較すると、多くの処理が追加されますが、導入コストが低く、運用も容易です。
以上がRedis でキャッシュを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。