1 : Cache - données chaudes
Données chaudes (données fréquemment interrogées mais pas fréquemment modifiées ou supprimées), le premier choix est pour utiliser le cache redis. Après tout, le puissant QPS bouillonnant et la stabilité extrêmement forte ne sont pas disponibles dans tous les outils similaires. Par rapport à memcached, il fournit également des types de données riches qui peuvent être utilisés. . Vous pouvez choisir des mécanismes de persistance tels que AOF et RDB, qu'ils soient froids, chauds ou chauds et froids.
Quelques points à noter en fonction d'applications spécifiques : De nombreuses personnes utilisent l'AOP de Spring pour créer une production et un effacement automatiques des caches Redis. Le processus peut être le suivant :
Sélectionnez Requête Redis avant la base de données, et utilisez redis si nécessaire Data, abandonnez la base de données sélectionnée, sinon, sélectionnez la base de données, puis insérez les données dans redis
mettez à jour ou supprimez la base de données pour vérifier si les données existent dans redis. supprimez d'abord les données dans Redis, puis mettez à jour ou supprimez la base de données. Les données dans
L'opération ci-dessus ne pose fondamentalement aucun problème si la quantité de concurrence est très faible, mais dans le cas d'une concurrence élevée, veuillez payer. attention au scénario suivant :
Supprimer le redis afin de mettre à jour A ce moment, un autre thread a exécuté une requête et a constaté qu'elle n'était pas dans redis. Il a immédiatement exécuté la requête SQL et inséré une donnée dans. redis. Revenant à la déclaration de mise à jour tout à l'heure, ce misérable fil ne connaissait pas la foutue sélection pour le moment. Le fil a fait une énorme erreur ! Ainsi, les données erronées dans Redis existeront pour toujours jusqu'à la prochaine mise à jour ou suppression.
2 : Compteur
Applications telles que le comptage des clics. Grâce au thread unique, les problèmes de concurrence peuvent être évités, garantis sans erreur et des performances de 100 % au niveau de la milliseconde ! Cool.
Commande : INCRBY
Bien sûr que c'est amusant, n'oubliez pas la persévérance, après tout, redis ne stocke que de la mémoire !
Trois : Queue
Équivalent à un système de messagerie, ActiveMQ, RocketMQ et d'autres outils sont similaires, mais je pense personnellement qu'il est correct de l'utiliser simplement, si le les exigences de cohérence des données sont élevées. Ou utilisez des systèmes professionnels tels que RocketMQ.
Puisque Redis ajoute des données à la file d'attente en renvoyant le numéro de l'élément ajouté dans la file d'attente, il peut être utilisé pour déterminer le nombre d'utilisateurs accédant à ce type d'entreprise
La file d'attente ne peut pas ne change que les requêtes simultanées en série, et peut également être utilisé comme file d'attente ou pile
Quatre : opérations sur bits (traitement des mégadonnées)
Utilisé dans des scénarios avec des centaines de des millions de données, par exemple des enregistrements système pour des centaines de millions d'utilisateurs, des statistiques sur le nombre de connexions en double, si un utilisateur est en ligne, etc.
Pensez au milliard d'utilisateurs de Tencent. Vous devez vérifier si un utilisateur est en ligne en quelques millisecondes. Que pouvez-vous faire ? Ne dites pas de créer une clé pour chaque utilisateur puis de les enregistrer un par un (vous pouvez calculer la mémoire requise, ce qui sera terrifiant, et il existe de nombreux besoins similaires, combien Tencent dépensera juste pour cela...) D'accord . Ici, vous devez utiliser des opérations sur place - utilisez les commandes setbit, getbit, bitcount.
Le principe est le suivant :
Construire un tableau suffisamment long dans redis. Chaque élément du tableau ne peut avoir que deux valeurs0 et 1, puis l'indice d'indice de ce tableau est utilisé. pour représenter ce que nous avons ci-dessus L'ID utilisateur dans l'exemple (doit être un nombre), alors il est évident que ce grand tableau d'une longueur de centaines de millions peut construire un système de mémoire via des indices et des valeurs d'éléments (0 et 1 ). Les scénarios que j’ai mentionnés ci-dessus sont également réalisables. Les commandes utilisées sont : setbit, getbit, bitcount
Cinq : verrouillage distribué et mécanisme à thread unique
Vérifier les requêtes répétées du front-end (des situations similaires peuvent être librement étendu) , peut être filtré via redis : chaque requête utilise l'adresse IP de la requête, les paramètres, les interfaces et autres hachages comme clés à stocker dans redis (requête idempotente), définit la période de validité, puis recherche dans redis la requête suivante. est utilisé pour vérifier s'il s'agit d'une soumission répétée dans un certain laps de temps
Le système Flash Kill, basé sur la fonctionnalité monothread de Redis, empêche "l'explosion" de la base de données
Incrémentiel global Génération d'identifiant, similaire à "Vente Flash"
Six : Dernière liste
Par exemple, la dernière liste d'actualités sur la page de liste d'actualités, si le nombre total est grand , essayez de ne pas utiliser select a from A limit 10. Pour ce type de produits de mauvaise qualité, essayez la commande LPUSH de redis pour créer une liste et insérez-les simplement un par un dans l'ordre. Mais que se passe-t-il si la mémoire est effacée ? C'est également simple. Si vous ne pouvez pas interroger la clé de stockage, utilisez simplement MySQL pour interroger et initialiser une liste dans Redis.
Ce qui précède est l'introduction complète aux scénarios d'utilisation de Redis.
Références associées : Tutoriel 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!