Redis
Stockage de données en mémoire rapide et open source pour une utilisation en tant que base de données, de cache, de courtier de messages et de file d'attente.
Qu'est-ce que Redis ?
Redis, qui signifie Remote Dictionary Server (Serveur de dictionnaire à distance), est un système de stockage de données clé-valeur en mémoire, open source et rapide. Le projet a démarré lorsque Salvatore Sanfilippo, le développeur initial de Redis, souhaitait améliorer la capacité de mise à l'échelle de sa start-up italienne. De là, il a développé Redis, qui est maintenant utilisé comme base de données, cache, agent de messages et file d'attente.
Redis offre des temps de réponse inférieurs à la milliseconde, permettant des millions de requêtes par seconde pour les applications en temps réel dans des secteurs comme les jeux, la publicité, les services financiers, les soins de santé et l'IoT. Aujourd'hui, Redis est l'un des moteurs open source les plus populaires, désigné comme la base de données « la plus aimée » par Stack Overflow pendant cinq années consécutives. En raison de ses performances rapides, Redis est un choix populaire pour la mise en cache, la gestion de session, les jeux, les classements, l'analyse en temps réel, le géospatial, l'appel de voiture avec chauffeur, le chat/la messagerie, le streaming multimédia et les applications pub/sub.
AWS propose deux services entièrement gérés pour exécuter Redis. Amazon MemoryDB for Redis est un service de base de données en mémoire compatible avec Redis et durable, qui offre des performances ultra-rapides. Amazon ElastiCache for Redis est un service de mise en cache entièrement géré qui accélère l'accès aux données à partir des bases de données primaires et des magasins de données avec une latence de quelques microsecondes. ElastiCache offre également un support pour Memcached, un autre moteur de mise en cache open source populaire.
Pour en savoir plus sur l'optimisation de vos applications avec Amazon ElastiCache for Redis, consultez cette présentation technique en ligne.
Avantages de Redis
Performances
Toutes les données Redis résident en mémoire, ce qui permet un accès aux données à faible latence et à haut débit. Contrairement aux bases de données classiques, le stockage de données en mémoire ne nécessite pas de déplacement vers le disque, ce qui réduit la latence du moteur à quelques microsecondes. De ce fait, le stockage de données en mémoire peut prendre en charge un ordre de grandeur plus important d'opérations et des temps de réponse plus rapides. Le résultat est une performance exceptionnellement rapide avec des opérations d'écriture et de lecture qui prennent généralement moins d'une milliseconde et la prise en charge de millions d'opérations par seconde.
Structures de données flexibles
Contrairement aux autres stockages de données à valeur de clé qui offrent des structures de données limitées, Redis vous propose une large variété de structures de données pour répondre aux besoins de votre application. Les types de données Redis sont les suivants :
- Chaînes : données de texte ou binaires jusqu’à 512 Mo
- Listes : une collection de chaînes dans l’ordre où elles sont ajoutées
- Ensembles : une collection non ordonnée de chaînes avec la possibilité de croiser, unifier et différencier d’autres types d’ensembles
- Ensembles ordonnés : ensembles ordonnés selon une valeur
- Hachages : une structure de données pour le stockage de listes de champs et de valeurs
- Bitmaps : un type de données permettant des opérations au niveau du bit
- HyperLogLogs : une structure de données basée sur la probabilité permettant d’estimer les éléments uniques d’un ensemble de données
- Streams : une structure de données de journal File d'attente de messages
- Géospatial : entrées basées sur la longitude/latitude des cartes, « à proximité »
- JSON : un objet imbriqué, semi-structuré de valeurs nommées prenant en charge des nombres, des chaînes de caractères, des valeurs booléennes, des tableaux et d'autres objets.
Simplicité et facilité d'utilisation
Redis vous permet d'écrire un code traditionnellement complexe avec des lignes moins nombreuses et plus simples. Grâce à Redis, vous écrivez moins de lignes pour le stockage, l'accès et l'utilisation de vos données dans vos applications. La différence est que les développeurs qui utilisent Redis peuvent utiliser une structure de commande simple, par opposition aux langages de requête des bases de données classiques. Par exemple, vous pouvez utiliser la structure de données de hachage de Redis pour déplacer des données vers un magasin de données avec seulement une ligne de code. Une tâche similaire sur un stockage de données sans structure de données de hachage nécessiterait beaucoup de lignes de code pour la conversion d'un format à un autre. Redis offre des structures de données natives, ainsi que de nombreuses options pour manipuler vos données et interagir avec elles. Plus d'une centaine de clients open source sont mis à la disposition des développeurs Redis. Les langages pris en charge comprennent Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, R, Go, etc.
Réplication et persistance
Redis emploie une architecture principal-réplica et prend en charge la réplication asynchrone qui permet de répliquer les données sur plusieurs serveurs réplicas. Cela offre de meilleures performances de lecture (car les requêtes peuvent être réparties entre les serveurs) et une meilleure récupération lorsque le serveur principal subit une panne. En ce qui concerne la persistance, Redis prend en charge les sauvegardes à un instant dans le passé (en copiant l’ensemble de données Redis sur le disque).
Redis n'a pas été conçu pour être une base de données durable et cohérente. Si vous avez besoin d'une base de données durable et compatible avec Redis, envisagez d'utiliser Amazon MemoryDB for Redis. Étant donné que MemoryDB utilise un journal transactionnel durable qui stocke les données dans plusieurs zones de disponibilité (AZ), vous pouvez l'utiliser comme base de données primaire. MemoryDB a été conçu pour permettre aux développeurs d'utiliser l'API Redis sans devoir se soucier de la gestion d'un cache séparé, d'une base de données ou de l'infrastructure sous-jacente.
Disponibilité et capacité de mise à l’échelle élevées
Redis offre une architecture principal-réplica dans un principal à un nœud ou une topologie en cluster. Cela vous permet de concevoir des solutions hautement disponibles fournissant une performance et une fiabilité constantes. Lorsque vous avez besoin d'ajuster la taille de votre cluster, différentes options pour mettre à l'échelle à la hausse ou à la basse sont également disponibles. Ainsi, votre cluster évolue en suivant vos demandes.
Open source
Redis est un projet open source soutenu par une communauté dynamique, dont AWS. Il n'y a aucun verrou propriétaire ou technologique, car Redis est basé sur des normes ouvertes, prend en charge des formats de données ouverts et propose un ensemble complet de clients.
Cas d'utilisation de Redis les plus répandus
Mise en cache
Redis est un outil de choix pour mettre en œuvre un cache en mémoire hautement disponible afin de réduire la latence d'accès aux données, d'augmenter le débit et d'alléger la charge de votre base de données et de votre application relationnelle ou NoSQL. Redis peut traiter des éléments fréquemment demandés en offrant des temps de réponse inférieurs à la milliseconde et vous permet de mettre à l'échelle facilement pour répondre à des charges plus élevées sans accroître le backend le plus coûteux. La mise en cache de requêtes de base de données, de sessions persistantes, de pages Web et d'objets souvent utilisés comme des images, des fichiers et des métadonnées sont les exemples communs de la mise en cache avec Redis.
Messagerie, instantanée ou non, et files d'attente
Redis prend en charge le pub/sub avec la correspondance de modèles et une variété de structures de données telles que des listes, des ensembles ordonnés et des hachages. Cela permet à Redis de prendre en charge les salles de conversation ultra performantes, les flux de commentaire en temps réel, les flux des réseaux sociaux et l'intercommunication entre serveurs. La structure de données des listes Redis facilite la mise en place d'une file d'attente légère. Les listes offrent des opérations atomiques, ainsi que des capacités de blocage, ce qui les rend compatibles avec de nombreuses applications nécessitant un courtier de messages fiable ou une liste circulaire.
Classements de jeux
Les développeurs de jeux choisissent souvent Redis lorsqu'ils veulent concevoir des classements en temps réel. Il suffit d'utiliser la structure de données des ensembles triés Redis qui assure l'unicité des éléments tout en veillant à ce que la liste reste triée en fonction des scores de l’utilisateur. Pour créer une liste de classement en temps réel, il suffit de mettre à jour le score d'un utilisateur chaque fois qu'il change. Vous pouvez également utiliser les ensembles triés pour gérer des données en séries chronologiques en utilisant des horodatages comme score.
Magasin de sessions
Les développeurs d'application choisissent souvent Redis comme stockage de données en mémoire avec une disponibilité et une persistance élevées pour stocker et gérer les données de session pour des applications à l'échelle d'Internet. Redis offre une latence inférieure à une milliseconde, ainsi que l’évolutivité et la résilience nécessaire pour gérer des données de session telles que des profils utilisateur, des informations d'identification, un statut de session et une personnalisation spécifique à l'utilisateur.
Streaming multimédia riche
Redis offre un stockage des données rapide et en mémoire pour alimenter les cas d'utilisation de streaming en direct. Redis peut être utilisé pour stocker des métadonnées du profil et des historiques de visionnage des utilisateurs, des tokens/informations d'authentification pour des millions d'utilisateurs et des fichiers manifestes pour permettre aux CDN de diffuser des vidéos à des millions d'utilisateurs d'ordinateur et de téléphone, en même temps.
Géolocalisation
Redis offre des structures et des opérateurs de données en mémoire conçus dans un but pour gérer les données géospatiales en temps réel à grande échelle et à vitesse élevée. Les commandes comme GEOADD, GEODIST, GEORADIUS et GEORADIUSBYMEMBER pour stocker, traiter et analyser les données géospatiales en temps réel rendent la géolocalisation facile et rapide avec Redis. Vous pouvez utiliser Redis pour ajouter des fonctions basées sur la géolocalisation à vos applications, telles que le temps et la distance du trajet ainsi que les points d'intérêt.
Machine Learning
Les applications modernes orientées données nécessitent du Machine Learning pour traiter rapidement du volume, de la variété et de la vitesse importants des données et automatiser la prise de décision. Pour des cas d'utilisation comme la détection de fraude dans les jeux et les services financiers, les enchères en temps réel en technologie publicitaire et le jumelage pour les rencontres amoureuses et le covoiturage, la capacité de traiter les données en temps réel et de prendre les décisions en quelques dizaines de millisecondes est de la plus haute importance. Redis vous offre un stockage de données en mémoire et rapide qui conçoit, entraîne et déploie rapidement des modèles de Machine Learning.
Les analyses en temps réel
Redis peut être utilisé avec des solutions de streaming telles qu'Apache Kafka et Amazon Kinesis comme stockage de données en mémoire pour intégrer, traiter et analyser des données en temps réel avec une latence inférieure à la milliseconde. Redis est un choix idéal pour les cas d'utilisation d'analyse en temps réel, tels que les analyses des réseaux sociaux, le ciblage publicitaire, la personnalisation et l'IoT.
Prise en charge des langages de Redis
Redis prend en charge la plupart des langages et des protocoles de programmation de premier plan, notamment :
Python
Java
PHP
Perl
Go
Ruby
C/C#/C++
JavaScript
Node.js
Redis ou Memcached
Redis et MemCached sont tous deux des magasins de données en mémoire et open source. Memcached, un service de cache de mémoire distribué et hautes performances, est conçu pour la simplicité tandis que Redis offre un riche ensemble de fonctions qui le rendent efficace pour une large gamme de cas d'utilisation. Pour obtenir une comparaison plus détaillée des fonctions afin de vous aider à prendre votre décision, consultez la section Redis vs Memcached. Ils travaillent avec des bases de données relationnelles ou clé-valeur afin d’améliorer les performances, telles que MySQL, PostgreSQL, Aurora, Oracle, SQL Server, DynamoDB et bien plus.
Utiliser Redis sur AWS
Amazon MemoryDB for Redis
Amazon MemoryDB for Redis est un service de base de données en mémoire compatible avec Redis et durable, qui offre des performances ultra-rapides. Il est spécialement conçu pour les applications modernes créées avec des architectures de microservices. Amazon MemoryDB stocke les données de manière durable dans plusieurs zones de disponibilité (AZ) à l'aide d'un journal transactionnel multi-AZ pour permettre un basculement rapide, la récupération de la base de données et le redémarrage des nœuds. Avec Amazon MemoryDB, toutes vos données sont stockées en mémoire, ce qui vous permet d'obtenir une latence de lecture de l'ordre de la microseconde et une latence d'écriture de l'ordre de quelques millisecondes, ainsi qu'un débit élevé.
Pour en savoir plus sur Amazon MemoryDB for Redis, consultez la documentation MemoryDB.
Amazon ElastiCache for Redis
Amazon ElastiCache for Redis est un service de mise en cache entièrement géré qui facilite la configuration, le fonctionnement et la mise à l'échelle d'un cache dans le cloud. Avec ElastiCache for Redis, vous pouvez accélérer la vitesse des applications et débloquer une latence de lecture et d'écriture de l'ordre de la microseconde en mettant en cache les données des bases de données primaires et des magasins de données. ElastiCache for Redis est disponible pour un essai gratuit avec l'offre gratuite AWS.
Ressources Redis