La version 6.0.0 de Redis, un SGBD open source, est sortie en disponible générale,
Une version stable avec des changements notables apportés aux à la version RC1

Redis 6.0.0 est maintenant disponible en version finale stable, quatre mois après la sortie de la version candidate RC1. L’annonce a été faite jeudi par Salvatore Sanfilippo, également connu sous le nom d'Antirez, programmeur informatique qui travaille pour Redis Labs. La dernière version stable vient avec des modifications notables des nouveautés déjà annoncées dans la version RC1. Antirez a qualifié Redis 6 de version de Redis la plus "enterprise" à ce jour, lorsqu’il annonçait la RC1 il y a quatre mois parce que « Redis est maintenant partout ».

Redis est un système de gestion de base de données clé-valeur scalable écrit en ANSI-C et distribué sous licence BSD. Comme cela a déjà été dit plus haut, cette version stable vient avec des modifications aux fonctions déjà existantes dans Redis 6 RC1, telles que la fonction "Client side caching", les ACL (liste de contrôle d'accès), le protocole de réplication PSYNC2, les commandes Redis, les fichiers RDB. Une nouvelle commande, STRALGO, a été ajoutée dans cette version finale. Avant de faire un récapitulatif des changements apportés dans Redis 6.0.0 stable, rappelons quelques nouveautés arrivées avec Redis 6 RC1.


Rappel des nouveaux ajouts dans Redis 6 RC1

RESP3, un nouveau protocole opt in, est arrivé alors que Redis avait atteint le statut de release candidate. Selon Antirez, un nouveau protocole était nécessaire, car l'ancien protocole, RESP2, n'était pas assez sémantique. L'idée principale avec RESP3 était la possibilité de renvoyer des types de données complexes directement depuis Redis, sans que le client ait à savoir dans quel type convertir les "flat arrays" ou les nombres retournés au lieu des valeurs booléennes appropriées, etc. Antirez ne s’attend pas à une rapide adoption du RESP3, car il n'est pas le seul protocole pris en charge.

Redis 6 RC1 est également venu avec des ACL parce que le SGBD en avait besoin, principalement pour l'isolation afin de protéger les données contre les bogues des applications. « Si votre employé ne peut faire que BRPOPLPUSH, les chances que le nouveau développeur ajoute pour le débogage un FLUSHALL qui se termine en code de production pour erreur et crée un cauchemar pendant 5 heures, sont plus faibles », a écrit le programmeur. Le point positif de cet ajout, selon Antirez, est qu’il y a maintenant une interface de modules Redis pour les ACL, ce qui vous permet d'écrire des méthodes d'authentification personnalisées. Redis 6 RC1 est venu aussi avec les SSL.

Les développeurs de Redis ont ajouté la fonction de mise en cache côté client dans Redis 6 RC1, mais Antirez l’avait qualifiée de fonctionnalité la plus immature de la version candidate et avait promis de l’améliorer avant la sortie de Redis 6 GA. Par exemple dans l’état où la fonction était dans la version RC1, les messages qui expirent dans certains "caches" ne pouvaient pas être compilés en un seul. « Il y a encore du travail à faire en janvier sur cette fonctionnalité, mais ce sera une bonne chose », avait-il déclaré en décembre.

Antirez avait également apporté à cette étape du cycle du logiciel le "Disque as a module". Selon lui, cet ajout montre vraiment à quel point le système de modules de Redis était déjà puissant à ce stade. Cette fonctionnalité a apporté la capacité de bloquer et de reprendre les clients, les timers, le contrôle AOF et RDB des données privées du module.

Cluster Proxy était aussi en cours de mise en œuvre dans Redis 6 RC1 afin de permettre beaucoup de choses intéressantes, d’après Antirez. La principale chose est de faire « une abstraction du Redis Cluster pour les clients, comme s'ils s'adressaient à une seule instance. Une autre consiste à effectuer un multiplexage, au moins lorsque c'est simple et que les clients utilisent des commandes et des fonctionnalités simples », avait-il expliqué.

Selon Antirez, le système de modules de Redis avait aussi atteint un nouveau niveau dans Redis 6 RC1. « C'est une des parties de Redis qui a mûri le plus rapidement dans notre histoire, parce que Redis Labs a utilisé le système de modules dès le jour zéro afin de développer des choses très complexes, et pas seulement des exemples triviaux », d’après le programmeur. Ce niveau atteint par l’API des modules a permis que Redis soit un cadre permettant d'écrire des systèmes sous forme de modules, sans avoir à tout inventer à partir de zéro, a-t-il ajouté.

Les changements apportés dans la version stable de Redis 6

Amélioration de la mise en cache côté client : L’équipe de Redis a repensé cette fonctionnalité et a abandonné l'approche par créneau de mise en cache au profit de l'utilisation de noms de clés, qu’elle pense être finalement la meilleure approche. En plus de cela, la fonction a été complétée avec le "mode diffusion", « qui sera, je pense, l'un des modes d'utilisation les plus populaires de la fonctionnalité », d’après Antirez. En décembre, Antirez avait dit qu’il pourrait être très utile d'ajouter un nouveau mode qui exige du serveur qu'il ne maintienne aucun état sur les clients, ou très peu.

Lorsque le mode diffusion est utilisé, le serveur n'essaie plus de se souvenir des clés demandées par chaque client. Les clients s'abonnent plutôt à des préfixes de clés. Le résultat de ce changement est qu’il n’y a plus de messages - mais seulement pour les préfixes sélectionnés -, et aucun effort de mémoire du côté du serveur. De plus, le mode "opt-in / opt-out" est désormais pris en charge, de sorte qu'il est possible pour les utilisateurs n'utilisant pas le mode diffusion, d'indiquer exactement au serveur ce que le client va mettre en cache, afin de réduire le nombre de messages d'invalidation, a expliqué Antirez. En résumé, la fonctionnalité de mise en cache côté client est maintenant bien meilleure, tant lorsqu'un mode à faible mémoire est nécessaire que lorsqu'un mode très sélectif (à faible bande passante) est nécessaire, a-t-il ajouté.

Amélioration des ACL : Premièrement, une nouvelle commande ACL LOG permet maintenant de voir tous les clients qui enfreignent les ACL, qui accèdent à des commandes qu'ils ne devraient pas, qui accèdent à des clés dont ils n’ont pas le droit d’accès, ou dont les tentatives d'authentification ont échoué. Selon Antirez, le journal reste en mémoire, de sorte que chaque agent externe peut appeler la commande pour une consultation. ACL LOG est très utile pour déboguer les problèmes liés aux ACL.


Deuxièmement, la fonction ACL GENPASS a été réimplémentée. Selon Antirez, elle utilise maintenant le HMAC basé sur SHA256, et accepte un argument optionnel pour dire au serveur combien de bits de chaîne pseudo-aléatoire inutilisable vous voulez générer. Redis génère une clé interne au démarrage de /dev/urandom, et utilise ensuite le HMAC en mode compteur afin de générer les autres nombres aléatoires : de cette façon, vous pouvez abuser de l'API, et l'appeler à chaque fois que vous le souhaitez, car elle sera très rapide, a expliqué le programmeur.

Amélioration de PSYNC2 : Le protocole de réplication PSYNC2 est maintenant amélioré, de sorte que Redis sera désormais en mesure de resynchroniser partiellement et plus souvent. En effet, il est maintenant capable de réduire les PING finaux dans le protocole, pour rendre plus probable que les répliques et les masters puissent trouver un décalage commun.

Amélioration des commandes Redis avec temporisation : Selon Antirez, non seulement les commandes BLPOP et autres qui acceptaient auparavant les secondes, acceptent maintenant les nombres décimaux, mais aussi la résolution réelle a été améliorée afin de ne jamais être inférieure à la valeur "HZ" actuelle, quel que soit le nombre de clients connectés.

Les fichiers RDB améliorés : Les fichiers RDB sont maintenant plus rapides à charger. En fonction de la composition réelle du fichier (valeurs plus ou moins grandes), vous pouvez vous attendre à une amélioration de 20 à 30%, selon le programmeur. La commande INFO est également plus rapide maintenant lorsqu’il y a plusieurs clients connectés - un problème de longue date qui a finalement été résolu.

Ajout de la commande STRALGO : Une nouvelle commande, STRALGO, a été ajoutée dans la version finale de Redis 6. Elle implémente des algorithmes de chaînes complexes. Pour l'instant, selon Antirez, le seul mis en œuvre est LCS (la plus longue sous-séquence commune), un important algorithme utilisé, entre autres, pour comparer l'ARN des coronavirus (et en général l'ADN et l'ARN d'autres organismes), histoire de garder trace de cette importante pandémie dans Redis.

Redis 6.0.0 est disponible en téléchargement depuis jeudi, mais Antirez met en garde contre d’éventuels bogues, car c’est la plus grande version de Redis "jamais" publiée. « …même si elle est stable, manipulez-la avec précaution, testez-la pour votre charge de travail avant de la mettre en production. Nous n'avons jamais vu de gros problèmes jusqu'à présent, mais faites attention », a-t-il prévenu. L’équipe Redis attend d’éventuels rapports de bogues pour préparer la prochaine version Redis 6.0.1.

Plusieurs commentateurs ont beaucoup apprécié la publication de la mise à jour. Toutefois, un autre ne semple plus aimer les versions après 4.0. « Maintenant, nous avons le SSL (est-ce que les gens exposent vraiment Redis sur Internet ?) », s’est-il questionné. « À mon avis, Redis s'intègre très bien dans la catégorie des "choses linux légères". Il semble qu'ils aspirent à être des logiciels d'entreprise, et c'est peut-être une bonne chose pour Redis-the-Business, mais ce n'est pas bon pour les utilisateurs comme moi qui veulent juste des structures de données simples en mémoire et le moins d'états possible ». Et vous, qu’en pensez-vous ?

Source : Antirez

Et vous ?

Que pensez-vous de la version finale de Redis 6 ?
Utilisez-vous Redis ? Quels sont les changements qui retiennent votre attention ?

Lire aussi

Pourquoi personne ne paie pour un logiciel de base de données open source ? Un regard sur MongoDB, Redis, ElasticSearch et CockroachDB
Après Debian, Red Hat supprime MongoDB de RHEL 8 et Fedora à cause de sa licence SSPL, dont le statut de licence libre ou open source est contesté
Un pirate a supprimé les données et défacé plus de 10 000 serveurs Elasticsearch exposés sur la toile sans MdP, selon Vinny Troia, ces attaques auraient été commises par le groupe The Dark Overlord