Quel problème Redis résout-il ?
Contradiction entre la lecture et l'écriture de données à grande échelle et les capacités de lecture et d'écriture des bases de données Retour sur l'historique de développement du cache CPU, afin de résoudre l'énorme différence entre les systèmes informatiques vitesse du CPU et la vitesse de lecture de la mémoire, le CPU utilise le cache pour stocker les instructions et les données. Le cache a évolué du cache d'origine de la carte mère au cache actuel de niveau 3, et la taille du cache a également continué à croître. Les données provenant d'Internet montrent que le taux de réussite du cache du processeur est d'environ 80 %.
Par analogie avec la contradiction entre CPU et mémoire lors du développement des ordinateurs, nous pouvons voir que la contradiction entre la lecture et l'écriture à grande échelle de données et les capacités de lecture et d'écriture des bases de données dans les grands sites Web est similaire à cette contradiction . Nous pouvons également créer une zone de stockage entre la base de données et l'application qui est plus rapide que la base de données : le cache.
Tout le monde connaît Redis en tant que cache. Nous savons que l'intention initiale de l'auteur de Redis en concevant Redis était que lorsqu'il utilisait une base de données relationnelle, aussi optimisée soit-elle, les performances ne pouvaient pas atteindre ses performances. attentes, alors il a écrit à la main une base de données en mémoire.
Lorsqu'il est utilisé comme cache, nous avons les scénarios d'application suivants :1. Données du point d'accès Par exemple, nous pouvons enregistrer la requête SQL. entraîne Dans la mémoire, les images fréquemment visionnées par les utilisateurs peuvent également être enregistrées dans la mémoire.
2. Liste de classement Sur la base de la structure de données zset fournie par Redis, nous pouvons implémenter la liste de classement plus facilement. Pour plus d’informations sur la mise en œuvre de la liste de classement, veuillez vous référer à la comparaison de conception et d’implémentation d’algorithmes de liste de classement. Dans le cas de données à petite échelle, l'utilisation de Mysql pour mettre en œuvre des classements ne pose pas beaucoup de problèmes, mais une fois que la quantité de données augmente, la lecture et l'écriture continues de Mysql deviendront un goulot d'étranglement.
3. Compteur/limiteur de vitesse
L'un des scénarios d'application des compteurs est de compter le nombre de likes des utilisateurs, et l'un des scénarios d'application des limiteurs de vitesse est de restreindre accès à la fréquence IP des utilisateurs. La raison pour laquelle Redis peut être utilisé pour les compteurs est que Redis est monothread. À chaque fois, l'instruction précédente doit être exécutée avant l'exécution de l'instruction suivante. Cela garantit que plusieurs instructions ne seront pas exécutées en même temps ; c'est-à-dire qu'aucun problème de concurrence ne se produira. Le principe du limiteur de vitesse est similaire.
4. Amis communs
En utilisant l'opération d'intersection de la structure de données Set fournie par Redis, vous pouvez trouver plus facilement l'intersection de deux collections Set tout en utilisant la requête de table de jointure de ; la base de données Il y aura une surcharge de performances importante car les grands sites Web comptent un grand nombre d'utilisateurs.
5. File d'attente de messages simple
La publication/abonnement fournie par Redis est un système de messagerie extrêmement simple. Il n'offre pas la fonction de le diviser en différents sujets et partitions et d'assurer la persistance comme Kafka. La file d'attente de messages de Redis est utilisée dans des scénarios qui ne nécessitent pas une grande fiabilité.
6. Partage de session
La session est utilisée pour enregistrer qui est l'utilisateur. Lorsqu'une application est déployée à l'aide d'un cluster, nous avons besoin d'un endroit pour gérer les sessions de manière uniforme. Nous pouvons utiliser une base de données pour enregistrer les sessions. Cependant, les exigences de performances pour la base de données sont actuellement plus élevées. . Pour cette logique, nous devons l'implémenter dans le code, mais si vous utilisez Redis pour partager la session, ce problème ne se posera pas.
Beaucoup des scénarios d'application ci-dessus peuvent également utiliser d'autres technologies pour résoudre le problème, mais une technologie comme Redis sera une meilleure solution sous certaines contraintes de ressources.
Pour plus d'articles techniques liés à Redis, veuillez visiter la colonne Introduction au didacticiel d'utilisation de la base de données Redis pour apprendre !
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!