Maison  >  Article  >  base de données  >  À quels scénarios d’application Redis est-il adapté ?

À quels scénarios d’application Redis est-il adapté ?

anonymity
anonymityoriginal
2019-06-05 16:38:306108parcourir

Redis est une base de données de valeurs-clés de type journal open source écrite en langage ANSI C, prend en charge le réseau, peut être basée sur la mémoire et persistante, et fournit des API dans plusieurs langues.

À quels scénarios d’application Redis est-il adapté ?

Redis propose de nombreux scénarios d'application. Il s'agit d'une simple liste de 7 scénarios d'application :

1 : Mise en cache— — Données chaudes

Données chaudes (données souvent interrogées mais pas souvent modifiées ou supprimées), le premier choix est d'utiliser le cache Redis. Après tout, le puissant QPS bouillonnant et la stabilité extrêmement forte ne le sont pas. Tous les outils similaires sont disponibles et, par rapport à Memcached, il fournit également une multitude de types de données pouvant être utilisés. De plus, les données en mémoire fournissent également des mécanismes de persistance tels que AOF et RDB parmi lesquels choisir, qu'elles soient froides, ou non. chaud ou froid et parfois les chauds sont facultatifs.

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 pour interroger Redis avant la base de données. , et utilisez redis si nécessaire Données, 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 simultanéité est très faible, mais dans le cas d'une simultanéité élevée, veuillez faites attention au scénario suivant :

Supprimer le redis afin de mettre à jour. À ce moment-là, 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. Pour en revenir à la déclaration de mise à jour tout à l'heure, ce misérable fil ne connaissait pas cette foutue sélection pour le moment. 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

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 à cette entreprise

La file d'attente peut non seulement changer 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 millions de des 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.

Le principe est le suivant :

Construire un tableau suffisamment long dans redis. Chaque élément du tableau ne peut avoir que deux valeurs​​0 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 pour stocker redis (requête idempotente), définir la période de validité, puis rechercher dans redis la requête suivante. 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

Global génération d'identifiants incrémentiels, similaire à la "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 de trucs bon marché comme sélectionner a dans A limite 10, 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.

Sept : Liste de classement

Celui qui obtient un score plus élevé sera classé plus haut. Commande : ZADD (avec suite, ensemble trié)

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