Maison  >  Article  >  développement back-end  >  Basculement Redis dans les applications PHP

Basculement Redis dans les applications PHP

王林
王林original
2023-05-15 20:10:51994parcourir

Redis est une base de données open source en mémoire qui prend en charge une variété de structures de données, notamment des chaînes, des hachages, des listes, des ensembles, des ensembles ordonnés, etc., et peut être largement utilisée dans la mise en cache de données, les files d'attente de messages et l'analyse statistique en temps réel. et d'autres scénarios. Lorsque vous utilisez Redis, puisque ses données sont stockées en mémoire, une fois qu'une panne se produit, les données seront perdues, le basculement est donc très important. Cet article présentera le mécanisme de basculement de Redis dans les applications PHP et son implémentation.

1. Principe du basculement Redis

Le basculement Redis est principalement implémenté via Redis Sentinel est une solution à haute disponibilité pour Redis. Elle peut surveiller la santé de l'instance Redis et la terminer automatiquement en cas d'échec de l'instance Redis. Sentinel se compose de nœuds sentinelles et d'instances Redis. Le nœud sentinelle est chargé de surveiller l'état de l'instance Redis. Une fois qu'il constate qu'une instance Redis n'est pas disponible, il en sélectionnera une parmi les instances Redis alternatives comme nouveau nœud maître et diffusera la nouvelle. informations à d'autres clients, les obligeant à se reconnecter au nouveau nœud maître.

Dans Redis Sentinel, le nœud sentinelle peut être configuré avec plusieurs instances Redis alternatives pour préparer l'élection d'un nouveau nœud maître après l'échec du nœud maître. Lorsque le nœud maître échoue, Sentinel en sélectionne une parmi les instances Redis alternatives. Si l'instance Redis sélectionnée n'est pas la dernière, il doit synchroniser cette instance avec le dernier état, puis l'utiliser comme nouveau nœud maître. Dans le même temps, Sentinel mettra également à jour le fichier de configuration pour informer les autres clients qu'ils doivent se connecter au nouveau nœud maître.

2. Implémentation du basculement Redis

Dans les applications PHP, la mise en œuvre du basculement Redis comprend principalement deux aspects : client et serveur. Le client peut implémenter un pool de connexions à haute disponibilité à l'aide de l'API fournie par Redis Sentinel, qui peut effectuer automatiquement le basculement Redis pour garantir la continuité des applications. Le serveur doit utiliser des nœuds sentinelles pour surveiller l'état de l'instance Redis et effectuer automatiquement le basculement en cas de panne afin de garantir la haute disponibilité de l'instance Redis.

  1. Basculement du client Redis

Le client Redis peut utiliser l'API fournie par Redis Sentinel pour implémenter le basculement. Tout d'abord, vous devez activer la fonction Sentinel dans le fichier de configuration redis.conf et spécifier l'adresse d'écoute et le numéro de port Sentinel :

sentinel monitor redis-cluster 127.0.0.1 6379 2
sentinel down-after-milliseconds redis-cluster 5000
sentinel failover-timeout redis-cluster 60000

Parmi eux, Sentinel Monitor est utilisé pour configurer la surveillance et la gestion du groupe d'instances Redis, et redis -cluster est le nom du groupe surveillé, 127.0.0.1 est l'adresse IP de l'instance Redis, 6379 est le numéro de port de l'instance Redis et 2 est le nombre d'instances Redis. sentinel down-after-milliseconds spécifie le temps de détection nécessaire à Sentinel pour détecter que l'instance Redis est hors ligne. L'unité est ici en millisecondes. sentinel failover-timeout spécifie le temps nécessaire pour passer du nœud principal au nœud de sauvegarde, l'unité est en millisecondes, ici elle est de 60 000 millisecondes.

Ensuite, le client Redis peut utiliser l'API fournie par Redis Sentinel pour implémenter un pool de connexions à haute disponibilité afin d'assurer le basculement automatique de Redis. Par exemple, dans une application PHP, vous pouvez utiliser le plug-in phpredis pour vous connecter à une instance Redis et définir l'option sentinel, comme indiqué ci-dessous :

$redis = new Redis();
$redis->connect('127.0.0.1', 26379);
$redis->setOption(Redis::OPT_SENTINEL, 'redis-cluster');

Parmi elles, la méthode connect est utilisée pour se connecter à l'instance Redis Sentinel , 26379 est le numéro de port de Sentinel et la méthode setOption est utilisée pour définir l'option Sentinel, redis-cluster est le nom du groupe surveillé. De cette manière, le client Redis de l'application PHP peut effectuer automatiquement le basculement Redis pour garantir la continuité de l'application.

  1. Basculement du serveur Redis

Le basculement du serveur Redis doit être implémenté à l'aide de Redis Sentinel. Tout d'abord, vous devez activer la fonction Sentinel dans le fichier de configuration redis.conf et spécifier l'adresse d'écoute et le numéro de port Sentinel :

sentinel monitor redis-cluster 127.0.0.1 6379 2
sentinel down-after-milliseconds redis-cluster 5000
sentinel failover-timeout redis-cluster 60000

Parmi eux, Sentinel Monitor est utilisé pour configurer la surveillance et la gestion du groupe d'instances Redis, et redis -cluster est le nom du groupe surveillé, 127.0.0.1 est l'adresse IP de l'instance Redis, 6379 est le numéro de port de l'instance Redis et 2 est le nombre d'instances Redis. sentinel down-after-milliseconds spécifie le temps de détection nécessaire à Sentinel pour détecter que l'instance Redis est hors ligne. L'unité est ici en millisecondes. sentinel failover-timeout spécifie le temps nécessaire pour passer du nœud principal au nœud de sauvegarde, l'unité est en millisecondes, ici elle est de 60 000 millisecondes.

Ensuite, démarrez le processus Redis Sentinel et exécutez la commande suivante :

redis-sentinel /path/to/redis-sentinel.conf

Parmi elles, /path/to/redis-sentinel.conf est le chemin du fichier de configuration de Redis Sentinel.

Enfin, Redis Sentinel surveille automatiquement la santé de l'instance Redis et effectue automatiquement le basculement en cas de panne de l'instance Redis. Si le nœud maître de l'instance Redis échoue, Sentinel sélectionnera l'une des instances Redis alternatives comme nouveau nœud maître et diffusera les informations aux autres clients afin qu'ils puissent se reconnecter au nouveau nœud maître.

3. Résumé

Redis est une très excellente base de données en mémoire qui peut être largement utilisée dans des scénarios tels que la mise en cache de données, les files d'attente de messages et l'analyse statistique en temps réel. Le basculement est très important lors de l'utilisation de Redis et peut être réalisé en utilisant Redis Sentinel. Dans les applications PHP, le client Redis peut utiliser l'API fournie par Redis Sentinel pour implémenter un pool de connexions à haute disponibilité afin d'assurer le basculement automatique de Redis et d'assurer la continuité des applications. Le serveur Redis doit utiliser Redis Sentinel pour surveiller l'état de l'instance Redis et effectuer automatiquement le basculement en cas de panne afin de garantir la haute disponibilité de l'instance Redis.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn