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.
Blog présenté : nouveautés de Redis 5 ?
Qu'est-ce que Redis ?
Redis est un système de stockage de données clé-valeur en mémoire, open source et rapide, pour une utilisation en tant que base de données, de cache, de courtier de messages et de file d'attente. Il offre des temps de réponse inférieurs à la milliseconde permettant des millions de demandes par seconde pour des applications en temps réel dans les domaines du jeu, de la technologie publicitaire, des services financiers, des soins de santé et de l'Internet des objets. Redis est un choix populaire pour la mise en cache, la gestion de session, l'analyse en temps réel, le géospatial, le chat/la messagerie, le streaming multimédia et les classements de jeux.
Blog 1 : utilisation de flux Redis »
Comment fonctionne Redis ?
Toutes les données Redis résident en mémoire, contrairement aux bases de données qui stockent des données sur disque ou SSD. Etant donné qu'ils n'ont pas besoin d'accéder à des disques, les magasins de données en mémoire comme Redis évitent les délais de recherche et peuvent accéder aux données en quelques microsecondes. Redis propose des structures de données polyvalentes, une haute disponibilité, la géospatiale, les scripts Lua, les transactions, la persistance sur disque et la prise en charge des clusters, ce qui simplifie la création d'applications à l'échelle en temps réel sur Internet.
Redis entièrement géré avec cryptage, redimensionnement des clusters en ligne, haute disponibilité et conformité. En savoir plus >>
Avantages de Redis
Stockage de données en mémoire
Toutes les données Redis sont situées dans la mémoire principale du serveur, contrairement aux bases de données comme PostgreSQL, Cassandra, MongoDB ou autres, qui stockent la plupart de leurs données sur un disque ou un SSD. Contrairement aux bases de données traditionnelles sur disque, où la plupart des opérations nécessitent un aller-retour au disque, les stockages de données en mémoire comme Redis ne subissent pas ce désavantage. Ils peuvent donc prendre en charge beaucoup plus d'opérations et offrir des temps de réponse plus rapides. Le résultat est visible : 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 stockages de données à valeur de clé simple 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
Simplicité et facilité d'utilisation
Redis simplifie votre code en vous permettant d'écrire peu de lignes pour le stockage et l'utilisation de vos données, ainsi que leur accès, dans vos applications. Par exemple, si votre application a stocké des données dans une HashMap et que vous souhaitez stocker ces données dans un stockage de données, il vous suffit d'utiliser la structure de données de hachage de Redis pour stocker les données. 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).
Disponibilité et persistance é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.
Extensibilité
Redis est un projet open source soutenu par une communauté dynamique. 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
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 entièrement géré sur AWS
Ressources Redis