Redis 8 caratteristiche

Redis 8.2 introduce miglioramenti significativi rispetto a Redis 7.x, offrendo prestazioni più elevate, una maggiore efficienza della memoria, una maggiore osservabilità e una migliore esperienza per gli sviluppatori. 8.2 offre nuove funzionalità in materia di flussi, bitmap, ricerca vettoriale, metriche dei cluster, pur conservando il familiare modello di programmazione di Redis.

I principali miglioramenti di alto livello di 8.2 sono i seguenti:

  • Incremento significativo delle prestazioni per i comandi e i carichi di lavoro più comuni.
  • Riduzione dell'utilizzo della memoria, in particolare per i metadati JSON e delle chiavi.
  • Nuove funzionalità nei flussi, nelle operazioni sui bit e nella ricerca vettoriale.
  • Metriche e osservabilità ampliate per cluster e repliche.

Aggiornamento da Redis 7.2 a Redis 8.2

Per informazioni su come aggiornare da Redis 7.2 a Redis 8.2, vedere Aggiornamento a una nuova versione principale.

Redis moduli

Redis 8 supporta diversi moduli ufficiali che ne estendono le funzionalità per casi d'uso avanzati. I moduli chiave e le loro funzionalità sono descritti nelle sezioni seguenti.

RedisBloom

RedisBloom è un modulo ufficiale di Redis che fornisce strutture di dati probabilistici: Filtro Bloom, Filtro Cuckoo, Count-Min Sketch e Top-K. Queste strutture scambiano l'esattezza con l'estrema efficienza spaziale e la velocità, rendendole ideali quando sono accettabili risposte approssimative con un limite di errore noto.

Le principali funzionalità di RedisBloom sono le seguenti:

  • Filtro Bloom: verifica se un elemento può essere presente in un insieme, con una probabilità configurabile di falsi positivi e nessun falso negativo.

  • Filtro Cuckoo: simile a Bloom, ma supporta le cancellazioni in modo più naturale.

  • Count-Min Sketch: stima la frequenza degli eventi in modalità streaming (ad esempio, quante volte appare un tasto).

  • Top-K: tiene traccia degli elementi più frequenti in un flusso di dati.

I casi d'uso tipici di RedisBloom sono i seguenti:

  • Controlli dei duplicati e dei precedenti (URL, e-mail e ID utente).

  • Rilevamento delle frodi e prevenzione degli abusi (segnalazione di modelli sospetti senza memorizzare l'intera cronologia).

  • Sistemi di raccomandazione e liste di tendenza che utilizzano Count-Min Sketch e Top-K.

  • Pre-filtri in cache per evitare inutili ricerche nel backend.

RedisBloom esempio

Per creare un filtro Bloom con un tasso di errore dell'1% e una capacità di 1000:

> BF.RESERVE bikes:models 0.01 1000

OK

Per aggiungere e controllare il nome di un modello:

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

(integer) 1

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

(integer) 1

Per ulteriori informazioni, consultare la sezione RedisBloom documentazione sui filtri

RediSearch

RediSearch è un motore di interrogazione e indicizzazione per Redis che fornisce ricerca full-text, indicizzazione secondaria, aggregazioni e supporto per la ricerca di similarità vettoriale. RediSearch indicizza i dati di Redis (ad esempio, hash e JSON) e consente di eseguire potenti query con punteggi, filtri ed evidenziazioni.

Le principali funzionalità di RediSearch sono le seguenti:

  • Ricerca full-text con stemming, fonetica e fuzzy matching.

  • Campi numerici, tag e geospaziali per filtri avanzati.

  • Motore di aggregazione per il faceting, l'analisi e il ranking.

  • Integrazione con campi vettoriali per la ricerca semantica e approssimativa dei vicini (ANN).

I casi d'uso tipici di RediSearch sono i seguenti:

  • Ricerca nel catalogo prodotti con filtri e sfaccettature.

  • Ricerca di log ed eventi con filtri di testo libero e strutturati.

  • Ricerca in tempo reale dei contenuti degli utenti (tweet, post e documenti).

  • Ricerca testuale e vettoriale combinata per applicazioni basate sull'intelligenza artificiale.

RediSearch esempio

Per creare un indice e aggiungere un documento:

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

OK

> HSET doc:1 title "hello redis"

(integer) 1

Per effettuare una ricerca per testo:

> FT.SEARCH idx "hello"

1) (integer) 1

2) "doc:1"

3) 1) "title"

   2) "hello redis"

Per ulteriori informazioni, consultare il sito RediSearch documentazione.

RedisJSON

RedisJSON introduce un tipo di dati JSON nativo per Redis, consentendo la memorizzazione, il recupero e l'aggiornamento parziale di documenti JSON che utilizzano una sintassi simile a JSONPath. RedisJSON è ottimizzato per un accesso rapido ai sottodocumenti e si integra con altre funzionalità di Redis, come RediSearch.

Le principali funzionalità di RedisJSON sono le seguenti:

  • Memorizzare documenti JSON strutturati come valori di prima classe.

  • Recuperare o aggiornare percorsi specifici senza caricare l'intero documento.

  • Supporto per array, oggetti e strutture annidate.

  • Possibilità di integrazione con le funzioni di ricerca e interrogazione per l'indicizzazione dei campi JSON.

I casi d'uso tipici di RedisJSON sono i seguenti:

  • Profili utente e sessioni con campi annidati aggiornati di frequente.

  • Documenti di configurazione e flag di funzionalità.

  • Cataloghi di prodotti o oggetti di contenuto condivisi tra i servizi.

  • API basate su JSON in cui Redis funge da backing store ad alta velocità.

RedisJSON esempio:

Per memorizzare un semplice documento JSON:

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

OK

Per ottenere un campo:

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

"\"Alice\""

Per ulteriori informazioni, consultare il sito RedisJSON documentazione.

RedisTimeSeries

RedisTimeSeries è un modulo per l'ingestione, l'archiviazione, l'interrogazione, l'aggregazione e il downsampling efficiente dei dati delle serie temporali. RedisTimeSeries aggiunge un tipo di dati di tipo serie temporale e i relativi comandi per modellare metriche ed eventi nel tempo.

Le principali funzionalità di RedisTimeSeries sono le seguenti:

  • Ingestione ad alta velocità con timestamp automatico.

  • Query su intervalli di tempo, con aggregazioni come avg, min, max e sum.

  • Politiche di conservazione e regole di compattazione per l'archiviazione a lungo termine.

  • Etichette per raggruppare e interrogare insiemi di serie temporali.

I casi d'uso tipici di RedisTimeSeries sono i seguenti:

  • Metriche dell'infrastruttura e dell'applicazione (CPU, memoria, latenza).

  • IoT letture dei sensori e telemetria.

  • Dati finanziari e metriche di mercato.

  • KPI aziendali e cruscotti operativi.

RedisTimeSeries esempio

Per creare una serie temporale e aggiungere un valore:

> TS.CREATE temp:room1

OK

> TS.ADD temp:room1 * 25.3

(integer) 1736846400000

Per ottenere il campione più recente:

> TS.GET temp:room1

1) (integer) 1736846400000

2) "25.3"

Per ulteriori informazioni, consultare il sito RedisTimeSeries documentazione.

Redis Vettore

Redis Vector fornisce un tipo di dati vettoriale e funzionalità di ricerca della somiglianza vettoriale, supportando interrogazioni approssimate di nearest neighbor (RNA) su embeddings. Ciò consente di eseguire carichi di lavoro di AI e ML, come la ricerca semantica e le raccomandazioni, direttamente all'interno di Redis.

Le principali funzionalità di Redis Vector sono le seguenti:

  • Memorizzazione di vettori ad alta dimensionalità (ad esempio, 128-1536 dimensioni) con tipi di indici configurabili come HNSW e flat.

  • Ricerca K-nearest neighbor (KNN) su campi vettoriali utilizzando metriche di distanza come il coseno, il prodotto interno o L2.

  • Query ibride che combinano la similarità vettoriale con condizioni di filtro su campi strutturati.

  • Integrazione con RediSearch o Query Engine per schemi flessibili.

I casi d'uso tipici di Redis Vector sono i seguenti:

  • Ricerca semantica di documenti per pipeline RAG.

  • Raccomandazioni personalizzate con l'uso di embeddings di utenti o di elementi.

  • Ricerca di similarità per immagini, audio o codice incorporato.

  • Rilevamento di frodi e anomalie tramite embeddings appresi.

Redis Esempio di vettore:

Per creare un indice vettoriale minimo e un documento (esempio a 4 dimensioni):

> 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

Alla ricerca KNN del vettore più vicino:

> 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"

Per ulteriori informazioni, consultare il sito Documentazione sui concetti di ricerca vettoriale.

Note di rilascio e changelog per Redis 7 a Redis 8

Le differenze funzionali tra Redis 7 e Redis 8 sono le seguenti:

  • Comandi Streams migliorati XDELEX e XACKDEL per il ciclo di vita dei messaggi atomici e una gestione più pulita dei gruppi di consumatori.

  • Operazioni bitmap estese che utilizzano operatori BITOP più ricchi per l'analisi di insiemi di bit di grandi dimensioni.

  • Funzionalità di ricerca vettoriale più mature integrate nel motore di interrogazione.

  • Molteplici correzioni di sicurezza e stabilità non disponibili nelle versioni precedenti di 7.x.

  • La distribuzione e il confezionamento dei moduli sono consolidati in 8.x, semplificando così la distribuzione.