La colonne suivante présentera les scénarios d'application ainsi que les avantages et les inconvénients de Redis de la colonne Tutoriel Redis J'espère que cela sera utile aux amis dans le besoin !
En tant que base de données non relationnelle typique, Redis est actuellement largement utilisé dans les applications de niveau entreprise. Il est très adapté aux scénarios avec peu de stockage et un volume d'accès énorme. Toutes les données sont en mémoire pour garantir un accès rapide aux données. En tant que type de noSQL, quelles sont les différences et les avantages entre celui-ci et memcached ?
L'architecture de stockage de MySQL+Memcached est couramment utilisée dans l'industrie, mais à mesure que le nombre de visites continue d'augmenter, de nombreux problèmes surviennent il.
1. MySQL doit constamment détruire les bases de données et les tables, et Memcached doit également continuer à se développer
2. Il existe une certaine incohérence des données entre Memcached et MySQL
3. Si Memcached est sujet à un faible taux de réussite, il pénétrera directement dans MySQL, ce qui empêchera la base de données de prendre en charge
En parlant de Redis, de nombreux développeurs uniquement Nous savons qu'il s'agit d'une base de données non relationnelle comme Memcached et qu'elle peut directement stocker des données sous forme K-V, mais par rapport à Memcached, elle présente également de nombreuses différences.
1. Redis prend non seulement en charge la forme simple de stockage de données K-V, mais prend également en charge le stockage de données de collecte telles que la liste, l'ensemble, le hachage, le zset, etc.
2. Redis prend en charge Sauvegarde des données en temps réel, temps d'arrêt opportun, les données peuvent également être restaurées
3. Redis prend en charge la persistance des données et les données stockées dans la mémoire peuvent être directement enregistrées sur le disque
String, Hash, Set, List, SortedSet, pub/sub, Transactions.
1. String : Strings est une variable stockée sous la forme clé-valeur la plus simple. Où Value peut être un nombre ou une chaîne. L'implémentation consiste à stocker par défaut une chaîne dans Redis, qui est référencée par redisObject. Lorsqu'une opération numérique telle qu'une incrémentation, une diminution, etc. est détectée, elle est automatiquement convertie en nombre pour le calcul. est converti en chaîne pour le stockage.
2. Hash : le stockage de hachage est la valeur de la paire clé-valeur. C'est Key-Hash, et Hash est une structure k-v. Si vous utilisez Memcached, vous devez empaqueter l'intégralité du hachage et le stocker dans la mémoire. Si vous devez interroger une certaine valeur, vous devez supprimer l'intégralité du hachage et. puis trouvez la valeur correspondante. Redis peut obtenir Value directement via des commandes, ce qui améliore considérablement les performances. Son principe de mise en œuvre : Lorsqu'il y a peu de membres, Redis utilisera un stockage compact similaire à un tableau unidimensionnel afin d'économiser de la mémoire. Lorsqu'il y aura beaucoup d'objets, il sera directement converti en stockage HashMap.
3. Set : Set est un ensemble de déduplication naturelle non ordonnée, c'est-à-dire Key-Set. En outre, il propose également une série de méthodes permettant d'exploiter directement des collections telles que l'intersection et l'union, ce qui est particulièrement pratique pour les fonctions de recherche d'amis communs et de préoccupations communes. La couche inférieure est implémentée par HashMap, où la valeur est nulle ;
4. List : List est une collection ordonnée et répétable, qui suit le principe du FIFO. La couche inférieure est implémentée en s'appuyant sur une liste doublement chaînée. , il prend donc en charge la double recherche positive en avant et en arrière. Grâce à List, nous pouvons facilement obtenir des fonctions telles que la dernière réponse.
5. SortedSet : Semblable à TreeSet en Java, il s'agit d'une version triable de Set. De plus, le tri prioritaire est également pris en charge et un paramètre de score est conservé pour y parvenir. La couche inférieure s'appuie principalement sur HashMap pour implémenter le tri en conservant le mappage entre la valeur insérée et la priorité du score.
6. pub/sub : publier et s'abonner, similaire à la file d'attente de messages mq. Vous pouvez choisir de vous abonner à une certaine clé. Une fois que cette clé publie des messages, tous les objets abonnés à cette clé peuvent recevoir ce message. Il peut principalement être utilisé dans les systèmes de messagerie en temps réel, comme le chat.
7. Transactions : NoSQL ne prend pas en charge les transactions, mais il fournit la fonction d'exécution du package, c'est-à-dire que toutes les commandes de ce package doivent être exécutées ensemble. De plus, une certaine clé peut être verrouillée lors de l'exécution. commandes dans un package, s’il est détecté que cette clé a changé, elle sera directement restaurée.
Redis utilise la mémoire pour fournir du stockage et enregistre les données via la fonction de persistance. Et il s’agit d’une opération de requête monothread. Cette série de fonctionnalités confère à Redis des fonctions très magiques.
1. Trouvez la dernière réponse.
Si vous utilisez une base de données relationnelle traditionnelle, vous devez utiliser select * from table which name="" order by time desc limit 100 ; cela consomme les performances de la base de données, mais via Redis, vous pouvez la créer directement via Id dans Redis. Une liste d'une longueur spécifiée de 1w. Lorsqu'une recherche est nécessaire, les 100 derniers enregistrements de la liste sont directement affichés.
2. Problèmes de classement
Les problèmes de classement courants, tels que les sujets les plus chauds, les classements des jeux, etc., peuvent être facilement résolus via Redis et peuvent être obtenus directement en utilisant ZRank.
3. Supprimer les données expirées
Redis n'est pas une base de données véritablement persistante Vous pouvez ajouter une heure valide aux données Lorsque la durée de validité dépasse, Redis supprimera automatiquement les données correspondantes.
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!