L’essentiel sur Redis
LeMagIT fait le point sur les principales bases de données du marché. Aujourd’hui, la base clé-valeur extensible, in-memory et sous licence open source, Redis.
Redis est un SGBD open source léger et flexible de type clé-valeur, dont le nom est la contraction de REmote DIctionary Server.
Qu’est-ce que Redis ?
Redis est souvent utilisé pour les applications nécessitant une haute disponibilité et une faible latence, comme dans les domaines du jeu, du commerce de détail et de la mobilité. La flexibilité du schéma des bases de données clé-valeur telles que Redis les rend parfaitement adaptées à la gestion de sessions, à la desserte de contenus publicitaires et à la gestion de profils utilisateur ou produit.
Une base de données clé-valeur convient aux situations où l’accès aux données se fait au moyen d’une clé, comme dans le cas de la recherche d’informations sur un produit d’après un numéro de produit. Les informations recherchées peuvent être de tout type, et même varier d’un produit à l’autre.
Fonctionnalités du SGBD Redis open source
À la fois considéré comme une base de données NoSQL, mais aussi telle une couche de cache, Redis est majoritairement prisé pour ses fonctionnalités in-memory. Ce SGBD entrepose les données dans la mémoire vive, puis les verse dans un système de stockage persistant sur disque. Il dispose d’un mécanisme de failover automatisé, Sentinel.
Bien qu’étant un magasin de données clé-valeur, le SGBD Redis open source prend en charge différentes structures de données. Les magasins de données clé-valeur traditionnels permettent d’associer des chaînes clé à des chaînes valeur. Or, dans Redis, la valeur n’est pas limitée à une simple chaîne, mais peut se composer de structures de données plus complexes. De par cette extensibilité, il est devenu une base de données multimodèle.
Redis prend en charge les structures de données suivantes :
- Chaînes « binary-safe » (n’altérant pas le fichier binaire).
- Listes ou collections d’éléments de chaînes triés par ordre d’insertion.
- Ensembles ou collections d’éléments de chaînes uniques, non triés.
- Ensembles triés, identiques aux précédents, mais dans lesquels chaque élément de chaîne est associé à une valeur de nombre flottant appelée score. Les éléments sont triés par score, ce qui permet de les récupérer par ensemble.
- Index géospatiaux. Les ensembles triés servent à supporter l’indexation de données géospatiales encodées via l’algorithme GeoHash, depuis la version 3.2.
- Tables de hachage, qui sont des cartes de champs associés à des valeurs. Le champ et la valeur sont des chaînes.
- Données en tableau (Bit arrays ou bitmaps), qui utilisent des commandes spécifiques pour gérer les valeurs de type chaîne comme un tableau de bits. Vous pouvez définir et supprimer individuellement des bits, compter les bits définis sur 1 ou chercher le premier bit défini ou non défini.
- HyperLogLogs, structure de données qui peut estimer le nombre d’éléments (la cardinalité) d’un ensemble (c’est-à-dire, compter des éléments uniques).
- Une structure de données introduite dans Redis 5.0 en 2018 se comporte comme un journal annexe ; les données clés-valeurs sont automatiquement associées à un ID unique et stockées chronologiquement. Cela doit permettre de mieux administrer les usages liés aux architectures pub/sub et au traitement des données en temps réel.
Redis s’exécute sur Linux. Le projet Redis ne prend pas directement en charge Windows. Microsoft Open Technologies développe et gère un port Windows qui cible Win64, tandis que le support de Linux permet d’employer WSL.
Un simple fichier de configuration permet de paramétrer Redis. Il est ainsi possible de spécifier le répertoire de travail et de contrôler le comportement, notamment la fréquence de sauvegarde des données, les limites et la réplication. Redis utilise sa propre bibliothèque d’événements.
Il existe cependant plusieurs bibliothèques et outils de niveau supérieur, dont redis-mount (pour utiliser Redis comme système de fichier) et Redis Desktop Manager (outil inter-plate-forme de gestion d’interface utilisateur graphique de poste de travail). En outre, Redis prend en charge de nombreux langages, tels que C, C#, C++, Erlang, Haskell, Java, Perl, PHP, Python, Rust et Ruby.
À y regarder de plus près, depuis la version 5.0, Redis open source évolue par petites touches. Les différentes notes de mise à jour témoignent de corrections de bugs et de vulnérabilités et d’optimisation des performances.
La dernière version en date de Redis open source est disponible depuis le 27 mars 2022. Celle-ci inclue la v2 du support des listes de contrôles d’accès (ACL), introduit dans la version 6.0, puis affiné en 6.2 jusqu’à récemment ; la gestion des permissions n’était pas un mécanisme de base du SGBD avant que la communauté décide de l’intégrer en 2020. Cette v2 d’ACL permet un meilleur contrôle des accès et commandes activables au sein des architectures Pub/Sub.
Les modules de Redis
Tout comme PostgreSQL, les innovations liées à ce SGBD sont principalement liées aux modules, propriétaires ou ouverts, qui viennent compléter la pile technologique nécessaire à la mise en place des différents cas d’usage cités plus haut.
Ainsi, RediSearch est un moteur d’indexation et de recherche plein texte pour la base de données, sous licence RSAL (Redis Source Available License). Redis Ldt a également développé une structure spécifique aux données time séries, RedisAI, qui permet de stocker les paramètres de modèles de machine learning, ainsi que RedisGears, un framework d’exécution dynamique, RedisJSON, un module pour prendre en charge les données JSON, ou encore RedisGraph, un module orienté graphes.
Parmi les modules open source, citons rediSQL, apportant des capacités SQL. Cthulu supporte plusieurs extensions JavaScript. Redis-protobuf rend le SGBD compatible avec le protocole de messagerie Protobuf, tandis que Neural-dis permet d’implémenter des réseaux de neurones à propagation avant (« feed forward neural network »), dans la base de données.
Redis : licences et commercialisation
Le SGBD open source Redis est disponible sous forme de licence BSD-3. La communauté Redis propose une assistance technique via la liste de diffusion officielle et le mot-clé #redis sur Freenode.
La licence RSAL protège la propriété intellectuelle de certains modules additionnels, mais permet aux clients de les utiliser librement, sous certaines conditions.
De 2013 à 2015, Pivotal était le principal contributeur de Redis avant que Redis Labs (devenu Redis Ltd.) prenne le relais. La gouvernance du projet, instituée en 2009, a évolué en 2020, d’un modèle qui réclamait l’approbation d’un seul homme à un autre, plus « méritocratique ». Cette structure repose sur une équipe « cœur », composée de trois collaborateurs de Redis Ltd, un autre d’Alibaba et un dernier membre travaillant pour AWS.
En 2015, Pivotal proposait un support payant. Depuis 2020, Redis fournit une distribution commerciale de la base de données : Redis Enterprise Software. Celle-ci est disponible sur site ou dans le cloud et propulse l’offre DBaaS de l’éditeur, Redis Enterprise Cloud, accessible depuis Azure, GCP et AWS.
Les PaaS Heroku, Red Hat OpenShift ou encore Tanzu Application Service permettent de déployer RES.
D’autres éditeurs et fournisseurs proposent un support commercial à la version open source de Redis, dont Aiven, ou des solutions compatibles comme AWS (MemoryDB, Amazon Elasticache for Redis), Google Cloud (MemoryStore for Redis), ou encore Microsoft Azure (Cache Azure pour Redis).
Article publié le 16 septembre 2015 et mis à jour le 9 mai 2022.