La version 8.2 de Redis, système de gestion de base de données NoSQL, est disponible. Redis offre des fonctions de stockage de données au format clé/valeur, ainsi que la prise en charge de formats de données structurés tels que les listes, les hachages et les ensembles, et permet d'exécuter des gestionnaires de scripts Lua côté serveur. Le code du projet est écrit en C et distribué sous licence AGPLv3.
Le SGBD Redis prend en charge les transactions qui permettent d'exécuter un groupe de commandes en une seule étape, garantissant cohérence et cohérence (les commandes d'autres requêtes ne peuvent pas interférer) dans l'exécution d'un ensemble de commandes donné, et en cas de problèmes, vous permettant de lancer changements en arrière. Toutes les données sont entièrement mises en cache dans la RAM. Les bibliothèques clientes sont disponibles pour les langages les plus populaires, notamment Perl, Python, PHP, Java, Ruby et Tcl.
Les commandes de gestion des données incluent l'incrémentation/décrémentation, les opérations standard sur les listes et les ensembles (union, intersection), le renommage des clés, les sélections multiples et les fonctions de tri. Deux modes de stockage sont pris en charge : la synchronisation périodique des données sur disque et la conservation d'un journal des modifications sur disque. Ce dernier garantit la préservation intégrale de toutes les modifications. La réplication des données maître-esclave entre plusieurs instances est également possible. les serveurs, exécuté en mode non bloquant. Un mode de messagerie publication/abonnement est également disponible, qui crée un canal à partir duquel les messages sont distribués aux clients par abonnement.
Principaux changements dans Redis 8.2 :
- Plus de 70 commandes ont été optimisées pour s'exécuter plus rapidement que dans Redis 8.0. Par exemple, la commande BITCOUNT est désormais 35 % plus rapide, tandis que les opérations de liste LINSERT, LREM et LPOS sont désormais 25 % plus rapides. 17 des commandes optimisées sont désormais au moins 5 % plus rapides, et 52 au moins 2 % plus rapides.

- Des optimisations ont été apportées au code pour la gestion des opérations simultanées et des E/S multithread, ce qui a permis une augmentation de 49 % du nombre d'opérations traitées par seconde lors de tests avec 8 threads d'E/S et une répartition de charge de 20 % de requêtes d'écriture et 80 % de requêtes de lecture. serveur a réussi à franchir le cap du 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 kvobj unifiée est désormais utilisée pour le stockage, permettant de regrouper le nom de la clé, la valeur courte et la durée de vie dans un seul bloc de mémoire allouée, et d'utiliser une référence unique à cette structure dans les tables de hachage, au lieu de références distinctes aux clés, aux données et à la durée de vie. Pour le stockage de valeurs de chaîne courtes, cette nouvelle méthode a permis de réduire la consommation de mémoire de 25 à 37 %.

- L'optimisation du stockage des données au format JSON a été réalisée, ce qui a permis de réduire la consommation de mémoire de 25 à 67 % lors du stockage d'entiers et de nombres à virgule flottante.
- Le mécanisme Streams, utilisé pour traiter et stocker le flux de messages, a été complété par les nouvelles commandes XACKDEL et XDELEX, simplifiant ainsi le traitement des flux auxquels plusieurs destinataires (groupes de consommateurs) sont connectés. Ces commandes résolvent le problème de suppression d'un message uniquement après confirmation de sa réception par tous les gestionnaires.
- De nouveaux opérateurs logiques DIFF, DIFF1, ANDOR et ONE ont été ajoutés à la commande BITOP, conçue pour effectuer des opérations au niveau du bit.
- Ajout d'un nouveau type d'index vectoriel SVS-VAMANA, qui prend en charge la compression vectorielle.
- De nouvelles mesures ont été ajoutées : charge par emplacement et distribution de la taille des clés pour les types de données de base.
Source: opennet.ru



