Redis と PHP のクラスター ソリューション: 高可用性とスケーラビリティを実現する方法
はじめに:
Redis は、高速でスケーラブルな構築によく使用されるオープンソースの高性能インメモリ データベースです。アプリケーション。一般的なサーバー側スクリプト言語として、PHP を Redis と併用して、高可用性とスケーラビリティのクラスター ソリューションを実現できます。この記事では、Redis と PHP を使用して高可用性とスケーラブルなクラスターを構築する方法を紹介し、コード例を通じて詳しく説明します。
1. Redis クラスターの構築
Redis のインストールと設定
まず、各サーバーに Redis をインストールする必要があります。 Redis は次のコマンドでインストールできます:
$ sudo apt-get install redis-server
インストールが完了したら、いくつかの構成が必要です。各サーバーの Redis 構成ファイルで、次のオプションを変更します。
bind <服务器IP地址> port <端口号>
Redis クラスターの作成
Redis の内部ツール redis-trib.rb を使用して、Redis クラスターを作成します。いずれかのサーバーで次のコマンドを実行します。
$ redis-trib.rb create --replicas <副本数> <服务器1>:<端口> <服务器2>:<端口> ...
例:
$ redis-trib.rb create --replicas 1 192.168.1.101:6379 192.168.1.102:6379 192.168.1.103:6379
上記のコマンドは、複数の Redis ノードを持つクラスターを作成し、各ノードにスロットを自動的に割り当てます。
2. PHP クラスター ソリューションの実装
PHP 拡張機能のインストール
Redis クラスターと通信するには、Redis を次の場所にインストールする必要があります。 PHPの拡張機能。次のコマンドを使用して Redis 拡張機能をインストールできます。
$ sudo apt-get install php-redis
Redis クラスターに接続
Redis 拡張機能によって提供される RedisCluster クラスを使用して、Redis クラスターに接続します。以下はサンプル コードです:
<?php $redis = new RedisCluster(null, ['192.168.1.101:6379', '192.168.1.102:6379', '192.168.1.103:6379']); $redis->set('key', 'value'); $value = $redis->get('key'); echo $value; ?>
上記のコードは RedisCluster オブジェクトを作成し、Redis クラスターの IP アドレスとポートをパラメーターとして渡します。このオブジェクトを使用して、set() や get() などのさまざまな操作を実行できます。
高可用性の実現
高可用性を実現するには、PHP で Redis Sentinel を使用して、Redis クラスターの正常性状態を監視し、フェイルオーバーを自動的に実行します。以下はサンプル コードです:
<?php $redisSentinel = new Redis(); $redisSentinel->pconnect('192.168.1.101', 26379); $master = $redisSentinel->rawCommand('SENTINEL', 'get-master-addr-by-name', 'mymaster'); $redis = new Redis(); $redis->pconnect($master[0], $master[1]); $redis->set('key', 'value'); $value = $redis->get('key'); echo $value; ?>
上記のコードは、Redis Sentinel を使用して、Redis クラスターのマスター ノードの IP アドレスとポートを取得します。次に、Redis 拡張機能を介してマスター ノードに接続された Redis オブジェクトを作成し、関連する操作を実行します。
スケーラビリティの実現
スケーラビリティを実現するには、PHP で Redis Cluster を使用してデータを自動的にシャーディングします。以下はサンプル コードです:
<?php $redis = new RedisCluster(null, [ '192.168.1.101:6379', '192.168.1.102:6379', '192.168.1.103:6379', ], 2, $config = []); $redis->set('key', 'value'); $value = $redis->get('key'); echo $value; ?>
上記のコードは、RedisCluster クラスを使用して Redis クラスターに接続します。デフォルトのスロット分散アルゴリズムを使用する場合、最初のパラメータは null、2 番目のパラメータは Redis ノードの IP アドレスとポート、3 番目のパラメータはシャードの数、最後のパラメータは構成オプションです。
要約:
上記の方法を通じて、Redis と PHP を使用して、高可用性とスケーラブルなクラスター ソリューションを構築できます。 Redis クラスターの構築後は、Redis 拡張機能を介してクラスターと簡単に通信でき、Redis Sentinel と Redis Cluster を使用して高可用性とスケーラビリティを確保できます。この記事がお役に立てば幸いです。
以上がRedis と PHP クラスター ソリューション: 高可用性とスケーラビリティを実現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。