Redis Stack è una versione estesa di Redis che fornisce funzionalità aggiuntive, e di livello più alto, rispetto a quelle che lo hanno reso famoso. L’idea alla base di questo libro è quella di mostrare come utilizzare le funzionalità di Redis Stack per costruire o, appunto, modernizzare le nostre le applicazioni sfruttando tutto quello che Redis Stack ha da offrire. Quindi, non usare solo Redis come session storage o cache server ma anche come database documentale, vettoriale, per serie temporali e per strutture dati probabilistiche.
Il contenuto del libro
Il libro è diviso in tre parti logiche: avvicinamento a Redis Stack (1), utilizzo in casi d’uso reali (2), deploy e gestione del cluster (3).
Nei primi due capitoli viene introdotto Redis Stack partendo da esempi di utilizzo di Redis, così da far capire subito al lettore le potenzialità del software. Gli esempi mostrano casi reali come il caching, la gestione delle sessioni, il rate limiting, una leaderboard, la deduplicazione dei dati, le funzionalità geografiche, il passaggio di messaggi, la ricerca di documenti (JSON), l’ analisi e monitoraggio dei dati. Alcuni di questi esempi saranno poi ripresi nei capitoli centrali (5, 6, 7 e 8) per essere affrontati in modo più dettagliato.
I capitoli 3 e 4 spiegano vari modi per installare Redis Stack o, in alternativa, come usare Redis Cloud. La trattazione è corredata da esempi di utilizzo delle librerie per Python (redis-py), Java (Jedis), JavaScript (node-redis), Go (go-redis) e C#/.Net (NRedisStack). Per chi ha già esperienza con l’installazione di Redis e l’utilizzo delle librerie, questi due capitoli potrebbero essere superflui mentre per tutti gli altri rappresentano una referenza necessaria. Un elemento di novità è invece la presentazione di Redis OM, un object-mapper che permette di definire uno schema per leggere e scrivere documenti all’interno di Redis. Solo gli esempi del capitolo 4 utilizzano le librerie dei vari linguaggi mentre tutto il resto del volume mostra sempre i comandi diretti della shell di Redis.
L’utilizzo di Redis Stack come database documentale è una delle funzionalità di punta e, per questo motivo, è trattato in modo esteso nel capitolo 5 Questo capitolo, oltre ad essere il più lungo di tutto il libro (circa 50 pagine) è anche uno di quelli che fornisce soluzioni ad alcuni dei problemi più comuni che si affrontano nel lavoro quotidiano. Nel capitolo vengono utilizzate le strutture hash e JSON per mostrare uno vasto numero di casi corredati da esempi: ricerca dei documenti, utilizzo di stop words, wildcard matching, negazioni, ricerca fuzzy, ricerca per tag, ricerca geospaziale, aggregazione, facet, utilizzo di cursori, highlighting, creazione di un sommario, utilizzo di sinonimi, spellcheck, autocompletamento, match fonetico, raccomandazione.. Non ci sono molti dubbi sul fatto che questo sarà il capitolo più facilmente apprezzato da tutti, perché i problemi risolti sono talmente comuni che è difficile non averli mai incontrati. La semplicità delle soluzioni mostrate sarà di sicuro uno dei fattori chiave che vi convincerà ad usare questo database.
I capitoli 6 e 7 trattano argomenti più specifici ma non meno interessanti: l’utilizzo di vettori di dati e di serie temporali. Gli esempi riportati mostrato come implementare una ricerca di similarità vettoriale (VSS) e un contatore di visitatori (time series).
Le pagine del capitolo 8 si occupano di strutture dati probabilistiche. Oltre a mostrarne l’utilizzo attraverso semplici esempi, ogni struttura dati viene introdotta da una spiegazione dei problemi che può risolvere. Questo aspetto, seppur marginale, permette a chi già non le conosce, di avvicinarsi e scoprire come utilizzare le strutture dati probabilistiche (HyperLogLog, Bloom filter, Cuckoo filter, Top-K, …). Nonostante la brevità (10 pagine) questo capitolo è uno dei più interessanti perché mostra la potenza di queste strutture dati e il valore che possono fornire agli sviluppatori nell’implementazione di soluzioni eleganti a problemi complicati.
La terza parte del libro inizia con il capitolo 9 dedicato allo scripting, quello già noto, in Lua per Redis e il nuovo supporto per JavaScript. Vengono mostrate capacità e differenza tra gli script (Lua) e le funzioni (Lua e JavaScript), i diversi modelli d’esecuzione e le garanzie fornite.
Il capitolo 10 introduce RedisInsight, uno strumento visuale per il monitoraggio e il debugging del server. In pratica vi permette di avere una dashboard dove analizzare il comportamento del server e delle vostre query, ed effettuarne il profiling.
Un’analisi dettagliata delle proprietà ACID e BASE di Redis Stack è fornita nel Capitolo 11.
La trattazione è approfondita e dettagliata, e si arriva anche a parlare di syscall (es. write
) per comprendere il ciclo di vita dei dati salvati all’interno del database.
Questo capitolo è quello che tutte le persone che si domandano “è pronto per la produzione?” vorrebbero (e dovrebbero) leggere.
Difficile non apprezzarne il livello di dettaglio.
Il libro si chiude con il capitolo 12 dove si parla di alta disponibilità (HA) e scalabilità. Sono introdotte le repliche attraverso l’utilizzo di Redis Sentinel, lo sharding attraverso Redis Cluster, le ACL, Redis Enterprise e Redis Cloud. Questo capitolo completa il precedente nel fornire una panoramica di quello che è necessario per utilizzare il software in un ambiente di produzione.
A chi è rivolto
Per poter comprendere il contenuto di questo volume è necessaria una conoscenza basilare di Redis, non serve esserne degli esperti. Per poter apprezzare le soluzioni offerte da Redis Stack è necessario invece avere almeno un po’ di esperienza nella creazione di software. Se certi problemi non si sono mai affrontati, le loro soluzioni potrebbero non risultare così interessanti come invece sono.
A chi è consigliato
Gli autori Luigi Fugaro e Mirko Ortensi sanno di cosa parlano e in questo volume hanno messo per iscritto molta della loro conoscenza, condividendola con i loro lettori.
Se cercate un manuale per ampliare la vostra conoscenza di Redis questo è quello che fa per voi. Se non avete intenzione di usare Redis Stack, vale la pena leggere lo stesso questo libro perché vi permette di avere una panoramica delle moderne soluzioni disponibili a molti problemi ricorrenti. In questo modo, la prossima volta che vi capiterà di dover implementare una leaderboard oppure un meccanismo di autocompletamento, ci penserete due volte prima di scrivere montagne di codice per risolvere un problema che RedisStack può gestire senza sforzo. Oppure, quando scoprirete che il vostro database attuale non vi permette di contare gli elementi unici di un set usando solo 12 KB di memoria (HyperLogLog).
Il libro è ben scritto e molto rilassante da leggere: grazie alle spiegazioni chiare e alla compattezza degli esempi, non ci si trova mai a dover rileggere pagine e pagine per capire quello di cui si sta parlando. Introducendo molti degli esempi, che saranno approfonditi poi, nei due capitoli iniziali, il lettore ha la possibilità di capire subito se questo libro fa per lui o no. Chi trova interessanti quei problemi, saprà già cosa lo aspetterà nella seconda parte del libro e potrà fin da subito farsi un’idea di cosa lo aspetterà poi.
Una nota su Redis, Redis Stack Licenze
Dopo che è stato annunciato il cambio di licenza di Redis si è parlato molto dei fork e dei rischi per chi lo utilizza. In realtà, dopo questo cambiamento, sia Redis che Redis Stack sono forniti con la stessa licenza (RSALv2 e SSPLv1) ed è facile immaginare che in un prossimo futuro Redis Stack diventi semplicemente “Redis”. A meno che non lavoriate per qualche hyperscaler cloud, questa licenza non dovrebbe rappresentare un problema nell’utilizzare Redis Stack nel vostro stack software.
Titolo | Redis Stack for Application Modernization |
Autori: | Luigi Fugaro e Mirko Ortensi |
ISBN | 9781837638185 |
Editore | Packt (2023) |
Recensito | da Alessandro Miliucci a maggio 2024 |