release de SGBD , appartenant à la classe des systÚmes NoSQL. Redis offre des fonctionnalités similaires à Memcached pour le stockage des données au format clé/valeur, élargies par la prise en charge de formats de données structurés tels que des listes, des hachages et des ensembles, ainsi que la possibilité d'exécuter des scripts de traitement en langage Lua cÎté serveur. Le code du projet sous licence BSD. Des modules supplémentaires, qui offrent des fonctionnalités avancées pour les utilisateurs d'entreprise, tels que RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, sont disponibles depuis l'année derniÚre sous licence propriétaire RSAL. Le développement de variantes open source de ces modules sous licence AGPLv3 est poursuivi par le projet .
Contrairement Ă Memcached, Redis assure un stockage persistant des donnĂ©es sur disque et garantit l'intĂ©gritĂ© de la base de donnĂ©es en cas d'arrĂȘt brutal. Les sources du projet sont distribuĂ©es sous licence BSD. Les bibliothĂšques clientes sont disponibles pour la plupart des langages populaires, y compris Perl, Python, PHP, Java, Ruby et Tcl. Redis prend en charge les transactions, permettant d'exĂ©cuter un groupe de commandes en une seule Ă©tape, garantissant la cohĂ©rence et l'exĂ©cution sĂ©quentielle (les commandes d'autres requĂȘtes ne peuvent pas s'intercaler) d'un ensemble de commandes donnĂ©, tout en permettant de revenir sur les modifications en cas de problĂšme. Toutes les donnĂ©es sont entiĂšrement mises en cache en mĂ©moire vive.
Pour la gestion des données, des commandes telles que l'incrément/décrément, 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 sont fournies. Deux modes de stockage sont pris en charge : la synchronisation périodique des données sur disque et la tenue d'un journal des modifications sur disque. Dans ce dernier cas, toutes les modifications sont totalement conservées. La réplication de données master-esclave sur plusieurs serveurs est également possible, réalisée en mode non-bloquant. Un mode de communication par messages « publication/abonnement » est également disponible, créant un canal à partir duquel les messages sont diffusés aux clients par abonnement.
Améliorations clés , ajoutés dans Redis 6.0 :
- Par défaut, le nouveau protocole RESP3 est proposé, mais l'établissement de la connexion commence en mode RESP2 et le client passe au nouveau protocole uniquement si la nouvelle commande HELLO a été utilisée lors de l'accord de connexion. RESP3 permet de retourner directement des types de données complexes sans avoir besoin de convertir des tableaux génériques du cÎté du client et en séparant les types retournés.
- Prise en charge des listes de contrĂŽle d'accĂšs (), permettant de dĂ©finir prĂ©cisĂ©ment quelles opĂ©rations un client peut effectuer et lesquelles il ne peut pas. Les ACL permettent Ă©galement de se protĂ©ger contre d'Ă©ventuelles erreurs de dĂ©veloppement, par exemple, en interdisant un traitement qui n'effectue que l'opĂ©ration BRPOPLPUSH d'effectuer d'autres opĂ©rations ; ainsi, si un appel FLUSHALL ajoutĂ© lors du dĂ©bogage est accidentellement oubliĂ© dans le code en production, cela ne causera pas de problĂšmes. La mise en Ćuvre des ACL n'implique pas de frais gĂ©nĂ©raux supplĂ©mentaires et n'affecte pratiquement pas les performances. Des modules d'interface sont Ă©galement prĂȘts pour les ACL, permettant de crĂ©er des mĂ©thodes d'authentification personnalisĂ©es. Pour consulter toutes les violations enregistrĂ©es des ACL, la commande « ACL LOG » est prĂ©vue. Pour gĂ©nĂ©rer des clĂ©s de session imprĂ©visibles, la commande « ACL GENPASS » a Ă©tĂ© ajoutĂ©e, utilisant HMAC basĂ© sur SHA256.
- Support pour le cryptage du canal de communication entre le client et le serveur.
- mise en cache des donnĂ©es cĂŽtĂ© client. Pour synchroniser le cache cĂŽtĂ© client avec l'Ă©tat de la base de donnĂ©es, deux modes sont disponibles : 1. MĂ©morisation sur le serveur des clĂ©s prĂ©cĂ©demment demandĂ©es par le client pour l'informer de la perte de pertinence des enregistrements dans le cache client. 2. MĂ©canisme de « diffusion », oĂč le client s'abonne Ă certains prĂ©fixes de clĂ©s et le serveur l'informe en cas de modification des clĂ©s correspondant Ă ces prĂ©fixes. L'avantage du mode de « diffusion » est qu'aucune mĂ©moire supplĂ©mentaire n'est utilisĂ©e sur le serveur pour stocker la carte des valeurs en cache cĂŽtĂ© client, mais l'inconvĂ©nient est l'augmentation du nombre de messages transmis.
- Le courtier de messages Disque, permettant d'utiliser Redis pour le traitement des files d'attente de messages, a été extrait de l'ensemble de base dans .
- AjoutĂ© , un proxy pour le cluster de serveurs Redis, permettant d'organiser le travail du client avec plusieurs serveurs Redis comme s'il s'agissait d'une seule instance. Le proxy peut router les requĂȘtes vers les nĆuds contenant les donnĂ©es nĂ©cessaires, multiplexer les connexions, reconfigurer le cluster en cas de dĂ©faillance des nĆuds, et exĂ©cuter des requĂȘtes couvrant plusieurs nĆuds.
- L'API pour l'écriture de modules a été considérablement améliorée, transformant essentiellement Redis en un cadre permettant de créer des systÚmes sous forme de modules additionnels.
- Un mode de réplication a été implémenté, dans lequel les fichiers RDB sont immédiatement supprimés aprÚs avoir été utilisés.
- Le protocole de réplication PSYNC2 a été amélioré, permettant une resynchronisation partielle plus fréquente, grùce à une augmentation des chances de détection de l'écart commun entre la réplique et le maßtre.
- Le chargement des fichiers RDB a été accéléré. Selon la configuration du fichier, l'accélération varie de 20 à 30 %. L'exécution de la commande INFO a été considérablement accélérée en présence d'un grand nombre de clients connectés.
- Une nouvelle commande STRALGO a Ă©tĂ© ajoutĂ©e avec la mise en Ćuvre d'algorithmes complexes de traitement de chaĂźnes. Actuellement, seul un algorithme LCS (longest common subsequence) est disponible, qui peut ĂȘtre utile pour comparer des sĂ©quences d'ARN et d'ADN.
Source : opennet.ru
