Redisは、キャッシュ、メッセージキュー、分散ロックなどのシナリオで広く使用されているオープンソースメモリデータ構造ストレージシステムです。 Redisクラスターは、データのシャードと冗長なバックアップを実現するために複数のノードと協力して、システムの同時処理機能とフォールトトレランスを改善します。この記事では、ThinkPhp6フレームワークの助けを借りて、Redisクラスターの構築と使用方法を紹介します。
Redisクラスターは複数のノードで構成され、各ノードはデータの一部を保存し、ノード間通信を通じてデータの整合性と一貫性を確保する責任があります。クラスターモードでは、データは均等に分散されており、システムは優れたスケーラビリティと高可用性を備えています。
マスタースレーブレプリケーションは、データバックアップとフェールオーバーを実装するためのRedisクラスターの鍵です。マスターノードは操作の書き込みを担当し、スレーブノードは操作の読み取りとマスターノードデータの同期を担当します。マスターノードが失敗すると、スレーブノードをマスターノードに宣伝して、サービスが中断されないことを確認できます。
クラスターは、ハッシュスロットアルゴリズムを介してデータをシャードし、各ノードは特定のハッシュスロット範囲を管理します。このようにして、データは異なるノード間で均等に分散され、ストレージとアクセスの効率が改善されます。
軽量PHPフレームワークとしてThinkPhp6は、Redisクラスターの統合を容易にするための豊富な拡張サポートを提供します。重要な手順を以下に説明します。
<span class="fun">作曲家には、TopThink/Think-Redisが必要です</span>
Composerを介してThinkPhpのRedis拡張機能をインストールすると、完了後にプロジェクトでRedis関数を使用できます。
return [
// ...
'redis' => [
'type' => 'cluster', // クラスターモード
'password' => '', // パスワード(ある場合)
'timeout' => 0, // 接続タイムアウト
'persistent' => false, // 永続的な接続を使用するかどうか
'clusters' => [
[
'host' => '192.168.1.101',
'port' => 6379,
],
[
'host' => '192.168.1.102',
'port' => 6379,
],
// 実際の状況に応じてノードを追加します
],
],
];
構成ファイルの複数のRedisノードのホストとポートを定義して、クラスター情報構成を完了します。
use think\facade\Redis;
// キー値を設定します
Redis::set('name', 'Tom');
// キー値を取得します
$name = Redis::get('name');
echo $name; // 出力 'Tom'
Redisクラスが提供する静的メソッドを使用すると、Redisクラスターを簡単に読み書きできます。使用方法は基本的に単一ノードRedisの方法と同じです。
この記事では、ThinkPhp6フレームワークに焦点を当て、Redisクラスターの基本的な知識と実装の手順を詳細に紹介します。 Redis拡張機能をインストールし、クラスターノード情報の構成、およびRedisインターフェイスの呼び出しにより、開発者は、複雑なビジネスニーズを満たすために、高性能で高度に利用可能な分散キャッシュシステムを迅速に構築できます。