Redis offre une multitude de fonctions. Vous pourriez être ébloui lorsque vous les verrez pour la première fois. À quoi servent ces fonctions ? Quels problèmes ont été résolus ? Dans quelles circonstances la fonction correspondante sera-t-elle utilisée ? Commençons par une explication étape par étape.
Cache basé sur la mémoire locale
Afin de résoudre le problème selon lequel l'appel de l'API prend encore 2 secondes, après enquête, la raison principale Parce qu'il a fallu près de 2 secondes pour utiliser SQL pour obtenir des actualités brûlantes, nous avons donc pensé à une solution simple et grossière, qui consiste à mettre en cache les résultats de la requête SQL directement dans la mémoire du serveur api actuel (définir le cache pour être valide, le temps est de 1 minute). Les requêtes suivantes dans un délai d'une minute liront directement le cache et l'exécution de SQL ne prendra plus 2 secondes. Si cette API reçoit 100 requêtes par seconde, alors il y a 6 000 requêtes par minute, c'est-à-dire que seules les requêtes encombrées dans les 2 premières secondes prendront 2 secondes, et toutes les requêtes dans les 58 secondes suivantes pourront recevoir une réponse immédiate. attendre encore 2 secondes.
Redis côté serveur
Lorsque la mémoire du serveur API a été remplie de cache, nous avons constaté qu'il fallait penser à une autre solution. L'idée la plus simple est de placer tous ces caches sur un serveur dédié et de configurer sa mémoire pour qu'elle soit grande. Ensuite, nous nous sommes concentrés sur Redis. . . Quant à la façon de configurer et de déployer Redis, je ne l'expliquerai pas ici. Le responsable de Redis a une introduction détaillée. Ensuite, nous avons utilisé un serveur distinct comme serveur Redis et la pression mémoire du serveur API a été résolue.
Persistance
Un seul serveur Redis est toujours de mauvaise humeur quelques jours par mois, et il se met en grève quand il n'est pas de bonne humeur, provoquant l'échec de tous les caches. Tous sont perdus (les données Redis sont stockées en mémoire). Bien que le serveur Redis puisse être remis en ligne, la perte de données mémoire a provoqué une avalanche de cache et la pression sur le serveur API et la base de données a soudainement augmenté. Ainsi, à l’heure actuelle, la fonction de persistance de Redis s’avère utile, ce qui peut atténuer l’impact de l’avalanche de cache. La persistance de Redis signifie que Redis écrira les données de la mémoire sur le disque dur et chargera les données au redémarrage de Redis, minimisant ainsi l'impact de la perte de cache.
Sentinel et réplication
Les frappes du serveur Redis sans avertissement sont une chose gênante. Alors que faire ? La réponse est : sauvegardez une machine et raccrochez-la. Alors, comment savoir qu'un certain serveur Redis est en panne, comment changer et comment s'assurer que la machine de sauvegarde est une sauvegarde complète du serveur d'origine ? À ce stade, Sentinel et Replication doivent apparaître. Sentinel peut gérer plusieurs serveurs Redis et fournit des fonctions de surveillance, de rappels et de basculement automatique ; la réplication est chargée de permettre à un serveur Redis d'être équipé de plusieurs serveurs de sauvegarde. Redis utilise également ces deux fonctions pour assurer la haute disponibilité de Redis. De plus, la fonction Sentinel est une utilisation des fonctions de publication et d'abonnement de Redis.
Cluster
Il y a toujours une limite supérieure sur les ressources d'un seul serveur. Nous pouvons utiliser la réplication maître-esclave pour les ressources CPU et les ressources IO pour séparer la lecture et les ressources. écriture. Transférer une partie de la pression CPU et IO vers le serveur esclave. Mais que faire des ressources mémoire ? Le mode maître-esclave sauvegarde uniquement les mêmes données et ne peut pas étendre la mémoire horizontalement. La mémoire d'une seule machine ne peut être augmentée, mais il y a toujours une limite supérieure. Nous avons donc besoin d’une solution qui nous permette d’évoluer horizontalement. Le but ultime est de rendre chaque serveur responsable uniquement d'une partie, afin que tous ces serveurs forment un tout Pour les consommateurs externes, ce groupe de serveurs distribués est comme un serveur centralisé
.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!