Sortie du SGBD Redis 7.0

La version du SGBD Redis 7.0, qui appartient à la classe des systèmes NoSQL, a été publiée. Redis fournit des fonctions de stockage de données clé/valeur, améliorées par la prise en charge de formats de données structurés tels que des listes, des hachages et des ensembles, ainsi que par la possibilité d'exécuter des gestionnaires de scripts côté serveur dans Lua. Le code du projet est fourni sous licence BSD. Des modules supplémentaires offrant des fonctionnalités avancées aux utilisateurs d'entreprise, tels que RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, sont fournis sous une licence propriétaire RSAL depuis 2019. Le projet GoodFORM, qui stagne ces derniers temps, a tenté de poursuivre le développement de versions ouvertes de ces modules sous licence AGPLv3.

Contrairement aux systèmes de stockage en mémoire tels que Memcached, Redis garantit que les données sont stockées de manière persistante sur le disque et que la base de données reste intacte en cas de panne. Le code source du projet est distribué sous licence BSD. Les bibliothèques clientes sont disponibles pour les langages les plus populaires, notamment Perl, Python, PHP, Java, Ruby et Tcl. Redis prend en charge les transactions, qui vous permettent d'exécuter un groupe de commandes en une seule étape, garantissant la cohérence et la 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ème, vous permettant de revenir en arrière changements. Toutes les données sont entièrement mises en cache dans la RAM.

Des commandes telles que l'incrémentation/décrémentation, les opérations de liste et d'ensemble standard (union, intersection), le renommage des touches, les sélections multiples et les fonctions de tri sont fournies pour la gestion des données. Deux modes de stockage sont pris en charge : la synchronisation périodique des données sur le disque et la maintenance d'un journal des modifications sur le disque. Dans le second cas, la sécurité totale de tous les changements est garantie. Il est possible d'organiser la réplication des données maître-esclave vers plusieurs serveurs, réalisée en mode non bloquant. Un mode de messagerie « publier/s'abonner » est également disponible, dans lequel un canal est créé, à partir duquel les messages sont distribués aux clients par abonnement.

Principaux changements dans Redis 7.0 :

  • Ajout de la prise en charge des fonctions côté serveur. Contrairement aux scripts précédemment pris en charge dans le langage Lua, les fonctions ne sont pas liées à l'application et visent à implémenter une logique supplémentaire qui étend les capacités du serveur. Les fonctions sont traitées inextricablement avec les données et en relation avec la base de données, et non avec l'application, y compris en étant répliquées et stockées dans un stockage persistant.
  • Une deuxième édition de l'ACL a été proposée, qui permet de contrôler l'accès aux données en fonction de clés et permet de définir différents ensembles de règles d'accès aux commandes avec la possibilité de lier plusieurs sélecteurs (ensembles d'autorisations) à chaque utilisateur. Chaque clé peut être identifiée par une autorité spécifique. Par exemple, vous pouvez limiter l'accès à la lecture ou à l'écriture uniquement d'un certain sous-ensemble de clés.
  • Une implémentation partitionnée (fragmentée) du paradigme de distribution de messages Publish-Subscribe fonctionnant dans un cluster est fournie, dans laquelle un message est envoyé à un nœud spécifique auquel un canal de message est attaché, après quoi ce message est redirigé vers les nœuds restants inclus. dans le tesson. Les clients peuvent recevoir des messages en s'abonnant à un canal, à la fois en se connectant au nœud principal et aux nœuds secondaires de la section. Le contrôle s'effectue à l'aide des commandes SSUBSCRIBE, SUNSUBSCRIBE et SPUBLISH.
  • Ajout de la prise en charge du traitement des sous-commandes dans la plupart des contextes.
  • Nouvelles commandes ajoutées :
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • CARTE FRITTÉE, CARTE ZINTER.
    • SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FONCTION *, FCALL, FCALL_RO.
    • DOCUMENTS DE COMMANDE, LISTE DE COMMANDES.
    • HISTOGRAMME DE LATENCE.
    • PARTAGES DE CLUSTER, LIENS DE CLUSTER, GAMME DE DELSLOTS DE CLUSTER, GAMME D'ADDSLOTS DE CLUSTER.
    • CLIENT NON-EXPULSION.
    • ACL SÉCHAGE.
  • La possibilité de traiter plusieurs configurations à la fois dans un seul appel CONFIG SET/GET a été fournie.
  • Les options « -json », « -2 », « -scan », « -functions-rdb » ont été ajoutées à l'utilitaire redis-cli.
  • Par défaut, l'accès client aux paramètres et commandes affectant la sécurité est désactivé (par exemple, les commandes DEBUG et MODULE sont désactivées, la modification des configurations avec l'indicateur PROTECTED_CONFIG est interdite). Redis-cli n'envoie plus de commandes contenant des données sensibles dans un fichier historique.
  • Une grande partie des optimisations ont été introduites dans le but d'augmenter les performances et de réduire la consommation de mémoire. Par exemple, la consommation de mémoire a été considérablement réduite lors de l'activation du mode cluster, lors de l'exécution d'opérations de copie sur écriture et lors de l'utilisation de hachages et de clés zset. Logique améliorée pour vider les données sur le disque (appel fsync). Le nombre de paquets réseau et d'appels système lors de l'envoi de réponses au client a été réduit. L'efficacité de la réplication a été améliorée.
  • La vulnérabilité CVE-2022-24735 dans l'environnement d'exécution de scripts Lua a été corrigée, ce qui permet de substituer votre propre code Lua et de réaliser son exécution dans le contexte d'un autre utilisateur, y compris avec des privilèges plus élevés.
  • Correction de la vulnérabilité CVE-2022-24736, qui permet au processus du serveur Redis de planter en raison du déréférencement du pointeur NULL. L'attaque est réalisée via le chargement de scripts Lua spécialement conçus.

Source: opennet.ru

Ajouter un commentaire