Valkey 8.1 : le fork de Redis améliore les performances, la mémoire et propose de nouveaux modules

Valkey

Il a été annoncé sortie de la nouvelle version de « Valkey 8.1 », un fork de Redis né après sa transition vers une licence propriétaire, et qui cherche à maintenir la philosophie ouverte du projet original.

Valkey 8.1 Il comporte un grand nombre d'améliorations et de changements, dont l'objectif principal est l'optimisation des performances qui réduit la latence, augmente l'efficacité de la mémoire et de nouvelles capacités modulaires.

Principales nouvelles fonctionnalités de Valkey 8.1

uno des changements les plus significatifs dans cette version est le réécriture complète de la table de hachage, utilisé à la fois dans le stockage de données clé-valeur et dans les types de données structurées tels que Hash, Set et Sorted Set. Grâce à cette refonte, Une réduction de l'utilisation de la mémoire a été obtenue : 20 octets de moins par clé sans TTL, et jusqu'à 30 octets si la clé a une durée de vie définie. De plus, la réduction de l’accès à la mémoire aléatoire a conduit à une amélioration des performances de 10 % dans les environnements d’E/S monothread.

Une autre nouvelle fonctionnalité de Valkey 8.1 est que l'itération sur les clés dans des opérations telles que la commande KEYS ou Le transfert de clés entre les nœuds d'un cluster dispose désormais d'un système de préchargement de cache, ce qui permet à la clé suivante d'être disponible avant le début du traitement. Cette approche a augmenté la vitesse de recherche des clés de 3,5 fois en utilisant mieux le cache du processeur.

Améliorations des E/S multithread et TLS

Valkey poursuit sa transition vers un modèle d'E/S multithread. Maintenant, le Le traitement des connexions TLS est effectué dans des flux séparés, qui a triplé sa capacité à accepter de nouvelles connexions. Des fonctions telles que SSL_pending() et ERR_clear_error() ont également été isolées dans des threads distincts, ce qui a entraîné une augmentation des performances de 10 % pour les opérations SET et de 22 % pour les opérations GET.

La réplication a été améliorée, en particulier dans les environnements avec TLS actif, éliminant les opérations redondantes telles que les sommes de contrôle inutiles. Cela a entraîné une amélioration de 18 % de la synchronisation complète lors de la réplication sans disque et une réduction de 47 % du coût des opérations de copie et d'écriture.

Optimisations sur les ensembles ordonnés et les types probabilistes

El Commande ZRANK pour les ensembles ordonnés a été optimisé et Il est désormais 45 % plus rapide, tandis que ZADD a adopté les instructions SIMD pour atteindre une plus grande efficacité. Pour les types de données probabilistes, l'utilisation de HyperLogLog a été améliorée pour utiliser seulement 12 Ko de mémoire fixe, et l'utilisation des instructions AVX2 a permis de multiplier les performances des opérations PFMERGE et PFCOUNT jusqu'à 12 fois, et BITCOUNT jusqu'à 5 fois.

Défragmentation active ininterrompue et meilleur contrôle des registres

El le système de défragmentation active a également été amélioré pour éviter les blocages ou les retards. Désormais, chaque cycle de défragmentation ne dure que 500 microsecondes, et une stratégie anti-famine a été mise en œuvre pour éviter que ces tâches ne soient reportées en raison d’opérations à long terme.

Ont été introduits Nouvelles options de configuration pour le formatage des enregistrements, y compris des formats d'heure personnalisés et un nouveau mode COMMANDLOG qui enregistre les requêtes et réponses longues. De plus, la commande LATENCY LATEST a été étendue avec de nouvelles mesures, offrant une meilleure visibilité sur les latences de pointe et de volume enregistrées.

Nouvelles fonctionnalités, modules et support

Valkey vous permet désormais d'exécuter l'opération SET IFEQ, qui conditionne l'écriture d'une clé à la valeur courante. Aussi Le support modulaire des moteurs de script est introduit, ouvrant la possibilité d'utiliser des langages alternatifs à Lua via des modules personnalisés.

Dans cette version également plusieurs modules font leurs débuts:

  • Module de recherche (Google) : Moteur de recherche de similarité vectorielle, idéal pour les cas d'apprentissage automatique qui exigent une faible latence et un débit élevé.
  • Module JSON (AWS) : permet la manipulation directe de fragments de documents JSON, évitant le traitement complet du contenu sur le client.
  • Module de filtre Bloom (AWS) : Implémentation de filtres de Bloom, utiles pour déterminer l'appartenance possible d'un élément à un ensemble, avec une efficacité probabiliste

Enfin, si vous souhaitez en savoir plus, vous pouvez consulter les détails dans la lien suivant