J'ai lu quelques documents Redis et essayé le didacticiel sur http://try.redis-db.com/ . Jusqu'à présent, je ne vois aucune différence entre Redis et les technologies de mise en cache comme Velocity ou Enterprise Library Caching Framework
En fait, vous ajoutez simplement des objets à un magasin de données en mémoire à l'aide d'une clé unique. Il ne semble pas y avoir de sémantique relationnelle ...
Qu'est-ce que je rate?
Réponses:
Non, Redis est bien plus qu'un cache.
Comme un cache, Redis stocke des paires clé = valeur. Mais contrairement à un cache, Redis vous permet d'opérer sur les valeurs. Il existe 5 types de données dans Redis - Strings, Sets, Hash, Lists et Sorted Sets. Chaque type de données expose différentes opérations.
La meilleure façon de comprendre Redis est de modéliser une application sans penser à la façon dont vous allez la stocker dans une base de données.
Disons que nous voulons construire StackOverflow.com. Pour rester simple, nous avons besoin de Questions, Réponses, Tags et Utilisateurs.
Modélisation des questions, des utilisateurs et des réponses
Chaque objet peut être modélisé comme une carte. Par exemple, une Question est une carte avec les champs {id, title, date_asked, votes, ask_by, status}. De même, une réponse est une carte avec les champs {id, question_id, answer_text, respond_by, votes, status}. De même, nous pouvons modéliser un objet utilisateur.
Chacun de ces objets peut être directement stocké dans Redis en tant que hachage. Pour générer des identifiants uniques, vous pouvez utiliser la commande d'incrémentation atomique. Quelque chose comme ça -
Gérer les votes
Maintenant, chaque fois que quelqu'un vote une question ou une réponse, il vous suffit de le faire
Liste des questions pour la page d'accueil
Ensuite, nous voulons stocker les questions les plus récentes à afficher sur la page d'accueil. Si vous écriviez un programme .NET ou Java, vous stockeriez les questions dans une liste. Il s'avère que c'est aussi la meilleure façon de stocker cela dans Redis.
Chaque fois que quelqu'un pose une question, nous ajoutons son identifiant à la liste.
Maintenant, lorsque vous souhaitez afficher votre page d'accueil, vous demandez à Redis les 25 dernières questions.
Maintenant que vous avez les identifiants, récupérez les éléments de Redis à l'aide du pipelining et montrez-les à l'utilisateur.
Questions par balises, triées par votes
Ensuite, nous voulons récupérer des questions pour chaque balise. Mais SO vous permet de voir les questions les mieux votées, les nouvelles questions ou les questions sans réponse sous chaque balise.
Pour modéliser cela, nous utilisons la fonction de jeu trié de Redis. Un ensemble trié vous permet d'associer une partition à chaque élément. Vous pouvez ensuite récupérer des éléments en fonction de leurs scores.
Allons de l'avant et faisons cela pour la balise Redis
Qu'avons-nous fait ici? Nous avons ajouté des questions à un ensemble trié et associé un score (nombre de votes) à chaque question. Chaque fois qu'une question est votée, nous augmenterons son score. Et lorsqu'un utilisateur clique sur "Questions étiquetées Redis, triées par votes", nous faisons simplement une
zrevrange
et récupérons les principales questions.Questions en temps réel sans page rafraîchissante
Et enfin, une fonction bonus. Si vous gardez la page des questions ouverte, SO vous avertira lorsqu'une nouvelle question sera ajoutée. Comment Redis peut-il aider ici?
Redis a un modèle pub-sub. Vous pouvez créer des chaînes, par exemple "channel_questions_tagged_redis". Vous puis les
subscribe
utilisateurs d'un canal particulier. Lorsqu'une nouvelle question est ajoutée, vous enverriezpublish
un message à ce canal. Tous les utilisateurs recevraient alors le message. Vous devrez utiliser une technologie Web telle que des sockets Web ou une comète pour transmettre le message au navigateur, mais Redis vous aide avec toute la plomberie côté serveur.Persistance, fiabilité, etc.
Contrairement à un cache, Redis conserve les données sur le disque dur. Vous pouvez avoir une configuration maître-esclave pour fournir une meilleure fiabilité. Pour en savoir plus, consultez les rubriques Persistance et réplication ici - http://redis.io/documentation
la source
Pas seulement une cache.
la source
Redis a des capacités uniques comme des lua-scripts ultra-rapides. Son temps d'exécution est égal à l'exécution des commandes C. Cela apporte également une atomicité pour la manipulation de données Redis sophistiquée requise pour le travail de nombreux objets avancés comme les verrous et les sémaphores.
Il existe un Redis basé sur une grille de données en mémoire appelé Redisson qui permet de construire facilement des applications distribuées sur Java . Merci à distribués
Lock
,Semaphore
,ReadWriteLock
,CountDownLatch
,ConcurrentMap
objets et bien d' autres.Fonctionne parfaitement dans les nuages et soutient AWS ElastiCache , AWS ElastiCache Cluster et Azure Redis Cache support
la source
En fait, il n'y a aucune dépendance entre la représentation relative des données (ou tout autre type de représentation des données) et le rôle de base de données (cache, persistance permanente, etc.).
Redis est bon pour le cache, c'est vrai, mais c'est bien plus qu'un cache. C'est une base de données haute vitesse entièrement en mémoire. Il persiste des données sur le disque. Ce n'est pas relationnel, c'est un stockage de valeur-clé.
Nous l'utilisons en production. Redis nous aide à créer un logiciel qui gère des milliers de demandes par seconde et conserve les données commerciales des clients tout au long du cycle de vie naturel.
la source
Redis est un cache qui convient le mieux à un environnement distribué / à une architecture de microservices.
Il est rapide, fiable, offre atomicité et cohérence et a une gamme de types de données tels que des ensembles, des hachages, des listes, etc.
Je l'utilise depuis un an et il s'agit vraiment d'un sauveur lorsque vous devez fournir une solution prête à la production très rapidement et pour tout problème lié aux performances, car vous pouvez toujours l'utiliser pour mettre en cache les données.
la source
En plus d'être un serveur de cache, Redis est spécifiquement un serveur de structure de données. Être un cache sous la forme d'un serveur de structure de données signifie beaucoup, car les structures de données sont les fondements des programmes ou des applications . Considérez que vous utilisez des bases de données SQL comme technologie de stockage et que vous devez construire une liste, une carte de hachage, un ensemble de classement ou des choses comme ça, c'est une sorte de douleur dans le cou. Redis peut vous fournir ces fonctionnalités directement de manière très simple, simplifiant ainsi fortement le développement.
D'un autre côté, un serveur de structure de données n'a pas besoin d'être sous forme de cache. Il existe des projets compatibles avec Redis mais qui ont des moteurs de stockage persistants.
la source
Redis prend en charge des structures de données telles que des chaînes, des hachages, des listes, des ensembles, des ensembles triés avec des requêtes de plage, des bitmaps, des hyperloglogs, des index géospatiaux avec des requêtes de rayon et des flux. Redis a une réplication intégrée, des scripts Lua, l'expulsion LRU, des transactions et différents niveaux de persistance sur disque, et offre une haute disponibilité via Redis Sentinel et un partitionnement automatique avec Redis Cluster.
implémentation avec python
https://beyondexperiment.com/vijayravichandran06/redis-data-structure-with-python/
la source