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.