Est Redis juste un cache?
J'ai lu certaines Redis docs et d'essayer le tutoriel à http://try.redis-db.com/. Jusqu'à présent, je ne vois aucune différence entre le Redis et technologies de mise en cache comme la Vitesse ou de la Bibliothèque d'Entreprise la mise en Cache Cadre
Vous êtes effectivement juste ajouter des objets à une banque de données en mémoire à l'aide d'une clé unique. Il ne semble pas y être toute la sémantique relationnelle...
Ce qui me manque?
- À partir de redis.io: Redis est un open source, advanced key-value store. Il est souvent considéré comme une structure de données de serveur depuis les touches peuvent contenir des chaînes, tables de hachage, les listes, les ensembles et d'ensembles classés. Cela dit, j'ai voté pour la fermeture de votre question car il ne rentre pas StackOverflow du format.
- Je suis d'accord ce n'est pas SI format. Où pensez-vous qu'il serait plus approprié?
Vous devez vous connecter pour publier un commentaire.
Pas, Redis est beaucoup plus qu'un cache.
Comme un Cache, Redis stocke des paires valeur /clé. Mais à la différence d'un cache Redis vous permet de faire fonctionner sur les valeurs. Il existe 5 types de données dans le Redis - Strings, Ensembles, Hachage, les Listes et les Ensembles classés. Chaque type de données présente plusieurs opérations.
La meilleure façon de comprendre le Redis est de modéliser une application sans avoir à penser à comment vous allez stocker dans une base de données.
Disons que nous voulons construire StackOverflow.com. Pour rester simple, nous avons besoin des Questions, des Réponses, des Tags et des Utilisateurs.
Modélisation Questions, les Utilisateurs et les Réponses
Chaque objet peut être modélisée comme une Carte. Par exemple, une Question est une carte avec des champs {id, titre, date_asked, voix, asked_by, le statut}. De même, une Réponse est une carte avec des champs {id, question_id, answer_text, answered_by, des votes, le statut}. De même, nous pouvons modéliser un objet utilisateur.
Chacun de ces objets peut être directement stockés dans le Redis comme une table de Hachage. Pour générer des identifiants uniques, vous pouvez utiliser le atomique de l'incrément de commande. Quelque chose comme cela -
De Manutention Jusqu'Voix
Maintenant, chaque fois que quelqu'un upvotes une question ou une réponse, vous avez juste besoin de faire ce
Liste de Questions pour la page d'Accueil de
Prochaine, nous voulons stocker le plus récent questions à afficher sur la page d'accueil. Si vous écriviez un .NET ou Java programme, vous stockerez les questions dans une Liste. S'avère, qui est la meilleure façon de les stocker dans le Redis ainsi.
Chaque fois que quelqu'un pose une question, nous allons ajouter l'id de la liste.
Maintenant, lorsque vous voulez rendre votre page d'accueil, vous demandez-vous Redis pour la plus récente de 25 questions.
Maintenant que vous avez de l'ids, récupérer des éléments Redis à l'aide de canalisation et de les montrer à l'utilisateur.
Questions par Tags, classés par Votes
Prochaine, nous voulons récupérer des questions pour chaque balise. Mais vous permet de voir en haut voté questions, de nouvelles questions ou des questions sans réponse en vertu de chaque balise.
À ce modèle, nous utilisons Redis' Ensemble Trié fonctionnalité. Un Ensemble Trié vous permet d'associer un score à chaque élément. Vous pouvez ensuite récupérer les éléments selon leurs résultats.
Permet d'aller de l'avant et de le faire pour le Redis tag
Ce que nous faisons ici? Nous avons ajouté des questions à un ensemble trié, et associé à un score (nombre de voix) pour chaque question. Chaque fois qu'une question se upvoted, on incrémente son score. Et lorsqu'un utilisateur clique sur "Questions tagged Redis, triés par voix", nous venons de faire un
zrevrange
et de revenir en haut de questions.En temps réel des Questions sans rafraichissement de la page
Et enfin, une fonction de bonus. Si vous continuez à la page de questions ouvertes, ce qui va vous avertir lorsqu'une nouvelle question est ajouté. Comment peut-Redis aider ici?
Redis a une pub-sub modèle. Vous pouvez créer des canaux, par exemple "channel_questions_tagged_redis". Ensuite, vous
subscribe
utilisateurs à un canal particulier. Lorsqu'une nouvelle question est ajoutée, vouspublish
un message à ce canal. Tous les utilisateurs obtiendrait alors le message. Vous aurez à utiliser une technologie web comme les web sockets ou d'une comète afin de mener le message dans le navigateur, mais Redis vous aide avec toute la plomberie sur le côté serveur.La persistance, la Fiabilité, etc.
À la différence d'un Cache Redis persiste données sur le disque dur. Vous pouvez avoir un maître-esclave configuré pour fournir une meilleure fiabilité. Pour en savoir plus, rendez-vous grâce à la Persistance et de la Réplication des sujets de plus ici - http://redis.io/documentation
Redis a des capacités uniques comme ultra-rapide lua scripts. Son temps d'exécution est égal à C commandes d'exécution. Cela apporte également l'atomicité sophistiqués Redis manipulation de données requises pour le travail, nombre d'objets tels que les Serrures et les Sémaphores.
Il y a un Redis basé dans la mémoire des données de grille appelée Redisson qui permet de construire facilement application distribuée sur Java. Grâce à distribué
Lock
,Semaphore
,ReadWriteLock
,CountDownLatch
,ConcurrentMap
objets et beaucoup d'autres.Fonctionne parfaitement dans les nuages et prend en charge AWS Elasticache, AWS Cluster Elasticache et Azure Cache Redis soutien
Pas juste un cache.
En fait il n'y a pas de dépendance entre les données relatives à la représentation (ou de n'importe quel type de représentation des données) et le rôle de base de données (cache, permanente persistance etc).
Redis est bon pour le cache, il est vrai, mais c'est beaucoup plus que juste un cache. Sa haute vitesse entièrement en mémoire de la base de données. Il ne conserver les données sur le disque. Ce n'est pas relationnelle, c'est la valeur-clé de stockage.
Nous l'utilisons dans la production. Redis nous aide à construire un logiciel qui gère des milliers de requêtes par seconde et de garder le client données de l'entreprise durant tout le cycle de vie naturel.
Redis est un cache qui le mieux adapté pour l'environnement distribué/Microservice architecture.
Il est rapide, fiable, fournit l'atomicité et la cohérence, et a gamme de types de données tels que les jeux, hache, etc la liste.
Je suis à l'aide de la dernière année, et il s'agit vraiment comme un sauveur lorsque vous avez besoin de fournir une production de solution prête à l'emploi et très rapide pour toutes les questions liées à la performance de que vous pouvez toujours l'utiliser pour mettre en cache des données.
En plus d'être un serveur de cache, Redis est une structure de données du serveur.
Être une cache dans la forme d'une structure de données de serveur signifie beaucoup, parce que les structures de données sont des principes fondamentaux de programmes, ou applications. Pensez à l'aide de bases de données SQL comme la technologie de stockage et de la nécessité de construire une liste, une table de hachage de la carte, un classement définir ou des choses comme ça, c'est une sorte de douleur dans le cou. Redis peut vous fournir ces fonctionnalités directement d'une manière très simple, donc très simplifier le développement.
D'autre part, une structure de données de serveur n'a pas à être dans la forme d'un cache. Il y a des projets compatibles avec le Redis mais persistante moteurs de stockage.