Redis est une base de données de stockage clé-valeur très populaire qui joue un rôle essentiel dans les applications Web modernes. Afin de garantir la haute disponibilité et la stabilité de Redis, il est généralement nécessaire d'utiliser une technologie de réplication maître-esclave. Dans le même temps, étant donné que le nœud maître doit basculer automatiquement vers le nœud de sauvegarde en cas de panne, le cluster de réplication a la capacité de s'auto-réparer. Ce qui suit décrit comment PHP implémente la commutation automatique de la réplication maître-esclave Redis.
1. Introduction à la réplication maître-esclave Redis
La réplication maître-esclave Redis est une technologie qui copie les données d'un serveur Redis vers plusieurs serveurs esclaves pour obtenir une lecture distribuée et un basculement automatique. Le nœud maître reçoit les opérations d'écriture, tandis que le nœud esclave ne peut accepter que les demandes de lecture et réplique les mises à jour du nœud maître de manière asynchrone. Lorsque le nœud principal tombe en panne, il bascule automatiquement vers le nœud de sauvegarde pour garantir une haute disponibilité.
2. PHP implémente la réplication maître-esclave Redis
En PHP, nous pouvons utiliser le package d'extension Redis pour implémenter rapidement la fonction de commutation automatique de la réplication maître-esclave Redis. Ici, nous prenons la version PHP 7.0.0 comme exemple. Tout d'abord, installez le package d'extension Redis dans l'environnement Linux :
sudo pecl install redis
ou téléchargez-le et installez-le manuellement :
wget https://github.com/phpredis/phpredis/archive/4.1.1.tar.gz tar xvzf 4.1.1.tar.gz cd phpredis-4.1.1/ phpize ./configure make sudo make install
Une fois l'installation terminée, vous pouvez ajouter la configuration suivante au php.ini pour activer le package d'extension Redis :
extension=redis.so
Ensuite, nous utilisons le code PHP suivant pour implémenter la commutation automatique de la réplication maître-esclave Redis :
//定义主从节点的参数 $redisMaster = [ 'host' => '127.0.0.1', 'port' => '6379' ]; $redisSlave1 = [ 'host' => '127.0.0.1', 'port' => '6380' ]; $redisSlave2 = [ 'host' => '127.0.0.1', 'port' => '6381' ]; //创建主节点连接并设置自动重连 $redis = new Redis(); $redis->pconnect($redisMaster['host'], $redisMaster['port']); $redis->setOption(Redis::OPT_AUTO_RECONNECT, true); //创建从节点连接并设置自动重连 $redisSlave1 = new Redis(); $redisSlave1->pconnect($redisSlave1['host'], $redisSlave1['port']); $redisSlave1->setOption(Redis::OPT_AUTO_RECONNECT, true); $redisSlave2 = new Redis(); $redisSlave2->pconnect($redisSlave2['host'], $redisSlave2['port']); $redisSlave2->setOption(Redis::OPT_AUTO_RECONNECT, true); //测试连接是否正常 if(!$redis->ping()){ //如果主节点出现故障,自动切换到备用节点 if(!$redisSlave1->ping() && !$redisSlave2->ping()){ //如果备用节点1和备用节点2都无法连接,则抛出异常 throw new Exception('Redis主备节点全部宕机'); }elseif($redisSlave1->ping()){ $redis = $redisSlave1; }elseif($redisSlave2->ping()){ $redis = $redisSlave2; } } //使用Redis主节点进行数据操作 $redis->set('foo', 'bar'); $value = $redis->get('foo'); echo $value;
Dans le code ci-dessus, nous définissons d'abord les paramètres de trois nœuds Redis, dont le nœud maître et deux nœuds de sauvegarde. Ensuite, les connexions du nœud maître et des deux nœuds esclaves ont été créées respectivement, et l'option de reconnexion automatique a été définie. Si la connexion du nœud principal échoue, il passera automatiquement au nœud de sauvegarde 1 ou 2. Si le nœud de veille 1 et le nœud de veille 2 ne parviennent pas à se connecter, une exception sera levée. Enfin, utilisez le nœud maître Redis pour les opérations sur les données.
3. Résumé
La réplication maître-esclave Redis est une technologie efficace de haute disponibilité qui peut garantir que la base de données Redis peut s'auto-réparer et continuer à fonctionner en cas de pannes et de conditions anormales. En PHP, vous pouvez utiliser l'extension Redis pour implémenter rapidement la fonction de commutation automatique de la réplication maître-esclave Redis. Grâce aux méthodes ci-dessus, la haute disponibilité et la stabilité de Redis peuvent être facilement obtenues, fournissant ainsi des services de base plus robustes pour les applications Web modernes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!