Redis 8 caractéristiques

Redis 8.2 introduit des améliorations significatives par rapport à Redis 7.x en offrant de meilleures performances, une meilleure efficacité de la mémoire, une plus grande observabilité et une meilleure expérience pour les développeurs. 8.2 offre de nouvelles capacités en matière de flux, de bitmaps, de recherche vectorielle, de métriques en grappes tout en préservant le modèle de programmation familier de Redis.

Les principales améliorations de haut niveau apportées à 8.2 sont les suivantes :

  • Des gains de performance significatifs pour les commandes et les charges de travail les plus courantes.
  • Réduction de l'utilisation de la mémoire, en particulier pour les métadonnées JSON et les clés.
  • Nouvelles fonctionnalités dans les flux, les opérations sur les bits et la recherche vectorielle.
  • Métriques étendues et observabilité pour les clusters et la réplication.

Mise à jour de Redis 7.2 vers Redis 8.2

Pour plus d'informations sur la mise à niveau de Redis 7.2 vers Redis 8.2, voir Mise à niveau vers une nouvelle version majeure.

Redis modules

Redis 8 prend en charge plusieurs modules officiels qui étendent ses fonctionnalités à des cas d'utilisation avancés. Les modules clés et leurs capacités sont décrits dans les sections suivantes.

RedisBloom

RedisBloom est un module officiel de Redis qui fournit des structures de données probabilistes : Filtre de Bloom, Filtre Cuckoo, Count-Min Sketch, et Top-K. Ces structures échangent l'exactitude contre une efficacité spatiale et une rapidité extrêmes, ce qui les rend idéales lorsque des réponses approximatives avec une limite d'erreur connue sont acceptables.

Les principales fonctionnalités de RedisBloom sont les suivantes :

  • Filtre de Bloom : teste si un élément peut faire partie d'un ensemble, avec une probabilité de faux positifs configurable et sans faux négatifs.

  • Filtre Cuckoo : similaire à Bloom mais prend en charge les suppressions de manière plus naturelle.

  • Esquisse compte-minute : estime la fréquence des événements en continu (par exemple, le nombre de fois qu'une touche apparaît).

  • Top-K : recherche les éléments les plus fréquents dans un flux de données.

Les cas d'utilisation typiques de RedisBloom sont les suivants :

  • Contrôles des doublons et des personnes déjà vues (URL, courriels et identifiants d'utilisateur).

  • Détection des fraudes et prévention des abus (signaler les schémas suspects sans stocker l'historique complet).

  • Systèmes de recommandation et listes de tendances qui utilisent Count-Min Sketch et Top-K.

  • Mettre en cache les pré-filtres pour éviter les recherches inutiles dans le backend.

RedisBloom exemple

Créer un filtre de Bloom avec un taux d'erreur de 1% et une capacité de 1000 :

> BF.RESERVE bikes:models 0.01 1000

OK

Pour ajouter et vérifier un nom de modèle :

> BF.ADD bikes:models "Smoky Mountain Striker"

(integer) 1

> BF.EXISTS bikes:models "Smoky Mountain Striker"

(integer) 1

Pour plus d'informations, voir la documentation du filtre RedisBloom

RediSearch

RediSearch est un moteur d'interrogation et d'indexation pour Redis qui permet la recherche en texte intégral, l'indexation secondaire, les agrégations et la prise en charge de la recherche par similarité vectorielle. RediSearch indexe les données Redis (par exemple, les hachages et JSON) et permet des requêtes puissantes avec notation, filtrage et mise en évidence.

Les principales fonctionnalités de RediSearch sont les suivantes :

  • Recherche plein texte avec stemming, phonétique et correspondance floue.

  • Champs numériques, balises et géospatiaux pour les filtres avancés.

  • Moteur d'agrégation pour les facettes, l'analyse et le classement.

  • Intégration de champs vectoriels pour la recherche sémantique et la recherche approximative du plus proche voisin (ANN).

Les cas d'utilisation typiques de RediSearch sont les suivants :

  • Recherche dans un catalogue de produits avec filtres et facettes.

  • Recherche de journaux et d'événements avec des filtres en texte libre et structurés.

  • Recherche en temps réel du contenu de l'utilisateur (tweets, posts et documents).

  • Recherche textuelle et vectorielle combinée pour des applications alimentées par l'IA.

RediSearch exemple

Pour créer un index et ajouter un document :

> FT.CREATE idx ON HASH PREFIX 1 "doc:" SCHEMA title TEXT

OK

> HSET doc:1 title "hello redis"

(integer) 1

Pour effectuer une recherche par texte :

> FT.SEARCH idx "hello"

1) (integer) 1

2) "doc:1"

3) 1) "title"

   2) "hello redis"

Pour plus d'informations, voir la documentation de RediSearch.

RedisJSON

RedisJSON introduit un type de données JSON natif pour Redis, permettant le stockage, l'extraction et les mises à jour partielles de documents JSON utilisant une syntaxe similaire à celle de JSONPath. RedisJSON est optimisé pour un accès rapide aux sous-documents et s'intègre à d'autres fonctionnalités de Redis telles que RediSearch.

Les principales fonctionnalités de RedisJSON sont les suivantes :

  • Stocker les documents JSON structurés en tant que valeurs de première classe.

  • Récupérer ou mettre à jour des chemins d'accès spécifiques sans charger l'ensemble du document.

  • Prise en charge des tableaux, des objets et des structures imbriquées.

  • Possibilité d'intégrer les fonctions de recherche et d'interrogation pour l'indexation des champs JSON.

Les cas d'utilisation typiques de RedisJSON sont les suivants :

  • Profils et sessions d'utilisateurs avec des champs imbriqués fréquemment mis à jour.

  • Documents de configuration et indicateurs de caractéristiques.

  • Catalogues de produits ou objets de contenu partagés entre les services.

  • API basées sur JSON où Redis agit comme un backing store à grande vitesse.

RedisJSON exemple :

Pour stocker un simple document JSON :

127.0.0.1:6379> JSON.SET user:1 $ '{"name":"Alice","age":30}'

OK

Pour obtenir un champ :

127.0.0.1:6379> JSON.GET user:1 $.name

"\"Alice\""

Pour plus d'informations, voir la documentation de RedisJSON.

RedisTimeSeries

RedisTimeSeries est un module permettant d'ingérer, de stocker, d'interroger, d'agréger et de sous-échantillonner efficacement des données de séries temporelles. RedisTimeSeries ajoute un type de données de séries temporelles et les commandes correspondantes pour modéliser les métriques et les événements dans le temps.

Les principales fonctionnalités de RedisTimeSeries sont les suivantes :

  • Ingestion à haut débit avec horodatage automatique.

  • Requêtes sur des intervalles de temps, avec des agrégations telles que avg, min, max et sum.

  • Politiques de conservation et règles de compactage pour le stockage à long terme.

  • Étiquettes pour le regroupement et l'interrogation d'ensembles de séries temporelles.

Les cas d'utilisation typiques de RedisTimeSeries sont les suivants :

  • Mesures de l'infrastructure et de l'application (CPU, mémoire, latence).

  • IoT les relevés des capteurs et la télémétrie.

  • Données financières et indicateurs de marché.

  • Indicateurs clés de performance et tableaux de bord opérationnels.

RedisTimeSeries exemple

Pour créer une série temporelle et ajouter une valeur :

> TS.CREATE temp:room1

OK

> TS.ADD temp:room1 * 25.3

(integer) 1736846400000

Pour obtenir le dernier échantillon :

> TS.GET temp:room1

1) (integer) 1736846400000

2) "25.3"

Pour plus d'informations, voir la documentation de RedisTimeSeries.

Redis Vecteur

Redis Vector fournit un type de données vectorielles et des capacités de recherche de similarités vectorielles, prenant en charge les requêtes approximatives du plus proche voisin (ANN) sur les données intégrées. Cela permet aux charges de travail d'IA et de ML, telles que la recherche sémantique et les recommandations, de s'exécuter directement sur Redis.

Les principales fonctionnalités de Redis Vector sont les suivantes :

  • Stockage de vecteurs à haute dimension (par exemple, 128-1536 dimensions) avec des types d'index configurables tels que HNSW et flat.

  • Recherche du plus proche voisin (KNN) sur des champs de vecteurs à l'aide de mesures de distance telles que le cosinus, le produit intérieur ou L2.

  • Requêtes hybrides combinant la similarité vectorielle avec des conditions de filtrage sur des champs structurés.

  • Intégration avec RediSearch ou Query Engine pour des schémas flexibles.

Les cas d'utilisation typiques de Redis Vector sont les suivants :

  • Recherche sémantique de documents pour les pipelines RAG.

  • Recommandations personnalisées à l'aide de l'intégration de l'utilisateur ou de l'élément.

  • Recherche de similitudes pour les images, les fichiers audio ou les codes intégrés.

  • Détection des fraudes et des anomalies à l'aide d'encastrements appris.

Redis Exemple de vecteur :

Créer un index vectoriel minimal et un document (exemple 4-dim):

> FT.CREATE vIdx ON HASH PREFIX 1 "vdoc:" \

SCHEMA embedding VECTOR HNSW 6 TYPE FLOAT32 DIM 4 DISTANCE_METRIC COSINE

OK

> HSET vdoc:1 embedding "\x00\x00\x80?\x00\x00\x80?\x00\x00\x80?\x00\x00\x80?"

(integer) 1

Pour KNN, recherche du vecteur le plus proche :

> FT.SEARCH vIdx "(*=>[KNN 1 @embedding $v AS score])" \

PARAMS 2 v "\x00\x00\x80?\x00\x00\x80?\x00\x00\x80?\x00\x00\x80?" SORTBY score DIALECT 2

1) (integer) 1

2) "vdoc:1"

3) 1) "embedding"

   2) "\x00\x00\x80?..."

   3) "score"

   4) "0.000000"

Pour plus d'informations, voir la documentation sur les concepts de recherche vectorielle.

Notes de version et journal des modifications pour Redis 7 à Redis 8

Les différences fonctionnelles entre Redis 7 et Redis 8 sont les suivantes :

  • Commandes XDELEX et XACKDEL améliorées pour le cycle de vie des messages atomiques et la gestion plus propre des groupes de consommateurs.

  • Opérations bitmap étendues utilisant des opérateurs BITOP plus riches pour l'analyse de grands ensembles de bits.

  • Capacités de recherche vectorielle plus élaborées intégrées au moteur de recherche.

  • Plusieurs correctifs de sécurité et de stabilité qui ne sont pas disponibles dans les versions précédentes de 7.x.

  • La distribution et l'emballage des modules sont regroupés sur le site 8.x, ce qui simplifie le déploiement.