Maison  >  Article  >  base de données  >  Où Redis est-il généralement utilisé ?

Où Redis est-il généralement utilisé ?

(*-*)浩
(*-*)浩original
2019-06-05 17:36:039766parcourir

Résumé des scénarios d'application Redis. Nous utilisons généralement Redis dans de nombreux endroits. Voici un résumé des scénarios d'application que nous comprenons :

Où Redis est-il généralement utilisé ?

1. .Cache des données du hotspot

En raison de la vitesse d'accès élevée et des types de données riches pris en charge par redis, redis est très approprié pour stocker les données du hotspot. De plus, en combinaison avec l'expiration, nous pouvons définir le délai d'expiration. puis procédez à l'opération de mise à jour du cache, cette fonction est la plus courante et est utilisée dans presque tous nos projets.

2. Application d'une entreprise à durée limitée (Apprentissage recommandé : Tutoriel vidéo Redis)

Vous pouvez utiliser la commande expire pour définir la survie temps d'une clé dans redis, redis la supprimera une fois le temps écoulé. Cette fonctionnalité peut être utilisée dans des scénarios commerciaux tels que des informations promotionnelles à durée limitée et des codes de vérification de téléphone mobile.

3. Problèmes liés aux compteurs

Redis peut être utilisé pour les activités de vente flash à haute concurrence et la génération de numéros de séquence distribués car la commande incrby peut réaliser un incrément atomique. Des services spécifiques se traduisent également par par exemple par la limitation du nombre de SMS envoyés par un numéro de téléphone mobile, la limitation du nombre de requêtes par minute pour une interface, la limitation du nombre d'appels par jour pour une interface, etc.

4. Problèmes liés aux classements

Les bases de données relationnelles sont généralement lentes à interroger les classements, vous pouvez donc utiliser SortedSet de redis pour trier les données chaudes.

Dans l'événement Thé au lait, nous devons afficher la liste de classement des likes de chaque département, j'ai donc créé un SortedSet pour chaque département, puis j'ai utilisé l'openid de l'utilisateur comme nom d'utilisateur ci-dessus, ainsi que le nombre de likes de l'utilisateur. Comme pour le score ci-dessus, un hachage est effectué pour chaque utilisateur. Grâce à zrangebyscore, le classement peut être obtenu en fonction du nombre de likes, puis les informations de hachage de l'utilisateur sont obtenues en fonction du nom d'utilisateur. C'était plutôt bien à cette époque.

5. Verrouillage distribué

Celui-ci utilise principalement la commande setnx de redis setnx : "set if not exist" signifie que s'il n'existe pas, le cache le fera. être défini avec succès et renvoyé 1, sinon il renvoie 0. Cette fonctionnalité est utilisée en arrière-plan de Yu You Ben Yuanfang. Parce que notre serveur est en cluster, la tâche planifiée peut s'exécuter sur les deux machines, donc dans la tâche planifiée, définissez d'abord un verrou. via setnx. Si le paramètre est réussi, il sera exécuté. S'il n'est pas défini avec succès, cela signifie que la tâche planifiée a été exécutée. Bien entendu, en fonction de l'activité spécifique, nous pouvons ajouter un délai d'expiration à ce verrou. Par exemple, si une tâche planifiée est exécutée toutes les 30 minutes, le délai d'expiration peut être fixé à un délai inférieur à 30 minutes. à la période de la tâche planifiée et à l'exécution de la tâche planifiée. Consommation de temps liée.

Bien sûr, nous pouvons appliquer cette fonctionnalité à d'autres scénarios nécessitant des verrous distribués. Combinée au délai d'expiration, il s'agit principalement d'éviter les blocages.

6. Opération de retard

J'ai fait des tests pertinents à ce sujet jusqu'à présent, mais cela n'a pas été appliqué à nos projets réels. Ci-dessous, je vais donner une application de. cette scène. Par exemple, une fois la commande passée, nous occupons l'inventaire. Au bout de 10 minutes, nous vérifions si l'utilisateur l'a effectivement acheté. S'il n'y a pas d'achat, le document sera invalide et l'inventaire sera en même temps restauré. . Étant donné que Redis fournit la fonction Keyspace Notifications depuis la version 2.8.0, les clients sont autorisés à s'abonner aux canaux Pub/Sub afin de recevoir des événements qui affectent l'ensemble de données Redis d'une manière ou d'une autre. Nous pouvons donc utiliser la solution suivante pour les besoins ci-dessus. Lorsque nous commandons la production, nous définissons une clé et la définissons pour qu'elle expire après 10 minutes. Nous implémentons un écouteur en arrière-plan pour surveiller l'efficacité de la clé. nous ferons un suivi. Logique ajoutée. Bien entendu, nous pouvons également utiliser le service de file d'attente différée des middlewares de messages tels que RabbitMQ et ActiveMQ pour répondre à cette exigence.

7. Pagination, recherche floue

La collection set de redis fournit une méthode zrangebylex, la syntaxe est la suivante :

Clé ZRANGEBYLEX min max [LIMIT offset count]

La requête de données de page peut être effectuée via ZRANGEBYLEX zset - + LIMIT 0 10, où - + signifie obtenir toutes les données

clé zrangebylex min max Cela peut renvoyer les données dans l'intervalle du dictionnaire, en utilisant cette fonctionnalité peut exécuter une fonction de requête floue. C'est également la seule fonctionnalité que j'ai trouvée dans Redis qui prend en charge les requêtes floues sur le contenu stocké.

Il y a quelques jours, j'ai utilisé cette fonctionnalité pour effectuer un test de simulation sur les données scolaires. Les données scolaires sont d'environ 600 000 et le temps de réponse est d'environ 700 ms, ce qui est légèrement plus rapide que la requête similaire de MySQL, mais parce que. cela peut éviter un grand nombre d'opérations d'E/S de base de données, donc globalement, il est plus propice à la garantie des performances du système qu'une requête mysql directe.

8. Stockage des relations mutuelles telles que les likes et les amis

Les fonctions externes fournies par Redis set sont similaires à celles de list. La particularité est que set peut éliminer automatiquement les doublons. Lorsque vous avez besoin de stocker une liste de données et que vous ne souhaitez pas que des données en double apparaissent, set est très utile. outil utile. Un bon choix, et set fournit une interface importante pour déterminer si un membre fait partie d'une collection définie, ce que la liste ne peut pas fournir. Ou encore, dans l'application Weibo, les personnes suivies par chaque utilisateur existent dans une collection, il est donc facile de mettre en œuvre la fonction permettant de trouver des amis communs à deux personnes.

Ceci est utilisé dans l'activité thé au lait, qui utilise set pour stocker la relation similaire entre les utilisateurs. De plus, la méthode sismember est utilisée pour déterminer si un like a été reçu avant d'aimer. le temps de réponse de cette interface a été contrôlé dans les 10 millisecondes, très efficace.

9. File d'attente

Étant donné que redis dispose de commandes telles que list push et list pop, il peut facilement effectuer des opérations de file d'attente.

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!

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