La version de la base de données Redis 8.2 a été publiée, la classifiant parmi les systèmes NoSQL. Redis fournit des fonctionnalités pour le stockage des données au format clé/valeur, avec un support étendu pour des formats de données structurées tels que des listes, des hachages et des ensembles, ainsi qu'une possibilité d'exécuter des scripts de traitement côté serveur en Lua. Le code du projet est écrit en C et est distribué sous la licence AGPLv3.
La base de données Redis prend en charge des transactions, permettant d'exécuter un groupe de commandes en une seule étape, garantissant la cohérence et la séquentialité (les commandes d'autres requêtes ne peuvent pas se glisser) de l'exécution d'un ensemble donné de commandes, et en cas de problème, permettant d'annuler les modifications. Toutes les données sont complètement mises en cache en mémoire vive. Des bibliothèques clients sont disponibles pour la plupart des langages populaires, y compris Perl, Python, PHP, Java, Ruby et Tcl.
Pour la gestion des données, des commandes telles que l'incrémentation/décrémentation, les opérations standard sur des listes et des ensembles (union, intersection), le renommage des clés, les échantillonnages multiples et les fonctions de tri sont fournies. Deux modes de stockage sont pris en charge : la synchronisation périodique des données sur le disque et la tenue d'un journal des modifications sur le disque. Dans le second cas, toutes les modifications sont entièrement conservées. Une organisation de réplication de données maître-esclave est également possible serveurs, réalisée en mode non-bloquant. Un mode de messagerie 'publication/abonnement' est également disponible, où un canal est créé, dont les messages sont distribués aux clients abonnés.
Principales modifications dans Redis 8.2 :
- Plus de 70 commandes ont été optimisées, rendant leur exécution plus rapide que dans Redis 8.0. Par exemple, la commande BITCOUNT est devenue 35% plus rapide, tandis que les commandes d'opérations sur des listes LINSERT, LREM et LPOS sont devenues 25% plus rapides. 17 des commandes optimisées sont devenues au moins 5% plus rapides, et 52 au moins 2%.

- Des optimisations du traitement des opérations simultanées et des entrées/sorties multithread ont permis d'augmenter de 49% le nombre d'opérations traitées par seconde dans des tests avec 8 threads d'entrée/sortie, répartissant la charge avec 20% de requêtes d'écriture et 80% de lectures. Sur un le serveur on a réussi à dépasser le seuil de 1 million d'opérations traitées par seconde.

- La méthode de stockage des données au format clé/valeur a été fondamentalement modifiée : une structure unifiée kvobj est désormais utilisée pour stocker le nom de la clé, une valeur courte et la durée de vie dans un seul bloc de mémoire alloué, permettant de se contenter d'un seul lien vers cette structure dans les tables de hachage, au lieu de liens distincts pour les clés, les données et le TTL. Avec le stockage de courtes chaînes de caractères, la nouvelle méthode a permis de réduire la consommation de mémoire de 25 à 37%.

- Une optimisation du stockage des données au format JSON a été réalisée, permettant de réduire la consommation de mémoire de 25 à 67% lors du stockage de nombres entiers et de nombres à virgule flottante.
- De nouvelles commandes XACKDEL et XDELEX ont été ajoutées au mécanisme Streams, utilisé pour traiter et stocker des flux de messages, simplifiant le travail avec des flux auxquels plusieurs destinataires (groupes de consommateurs) sont connectés. Ces commandes résolvent le problème de la suppression d'un message uniquement après que sa réception a été confirmée par tous les gestionnaires.
- De nouveaux opérateurs logiques DIFF, DIFF1, ANDOR et ONE ont été ajoutés à la commande BITOP, destinée à exécuter des opérations sur les bits.
- Un nouveau type d'index de vecteurs SVS-VAMANA a été ajouté, prenant en charge la compression des vecteurs.
- De nouvelles métriques ont été ajoutées : charge par slot individuel et distribution des tailles de clés pour les types de données de base.
Source : opennet.ru



