Che cos’è Redis, Come Funziona?
Redis sta per Remote Dictionary Server, è un database NoSQL scritto in C open source e formattato come valore-chiave (inmemory). Redis sta per “dizionario remoto“. Mantiene i dati in formato coppia chiave-valore e l’accesso ai dati è molto veloce. Pertanto, viene ampiamente utilizzato per le operazioni di cache. Oltre a funzionare come inmemory, Redis, che ha la caratteristica di archiviare i dati su disco, impedisce la perdita di dati. Lo scopo di Redis è di memorizzare nella cache è alleggerire il carico dell’applicazione in background o del database e raggiungere i dati nel modo più rapido ed economico. Redis è determinante nel fare proprio questo, consentendo di recuperare gli elementi in meno di un millisecondo.
Se pensiamo a Redis come a un armadio di archiviazione dati, Redis accetta ogni cassetto dell’armadio come 1 hashslot e Redis memorizza le chiavi in questa struttura chiamata hashslot. Avere 16384 hashslot in Redis non significa che possono essere archiviate solo 16384 chiavi. A seconda della struttura e delle dimensioni del sistema, in ogni slot possono essere archiviate migliaia o decine di migliaia di chiavi. Quindi, come fa Redis a decidere quali dati archiviare in quale slot? Redis calcola per ogni chiave che memorizzerai con l’algoritmo Hash CRC16 e la modalità di questo valore viene presa in base al numero 16384. Quindi, in base al risultato, viene determinato lo slot della chiave da memorizzare.
Senza utilizzare una cache, l’applicazione interagisce con l’origine dati per ogni richiesta. Al contrario, quando si utilizza una cache è necessaria solo una singola richiesta all’origine dati esterna, con successivo accesso servito dalla cache.
Quando un’applicazione si basa su origini dati esterne, la latenza e il throughput di tali origini possono creare un collo di bottiglia delle prestazioni. Un modo per migliorare le prestazioni è archiviare e manipolare i dati in memoria, fisicamente più vicino all’applicazione.
È qui che entra in gioco Redis. Redis è progettato per archiviare tutti i dati in memoria, offrendo le prestazioni più veloci possibili durante la lettura o la scrittura dei dati. Redis risiede nella memoria principale del server. In questo modo, può supportare più transazioni e tempi di risposta più rapidi. Offre prestazioni veloci con operazioni di lettura o scrittura medie che richiedono meno di un millisecondo e supporto per milioni di operazioni al secondo.
Perché usare Redis?
- Database a risposta rapida: memorizza i dati in memoria anziché su un disco; il suo tempo di risposta è più veloce di altri quando si eseguono operazioni di lettura e scrittura. Può essere utilizzato insieme ad altri database come supporto per ridurre il carico e migliorare le prestazioni, ma può anche essere utilizzato come database primario.
- Persistenza dei dati : Redis utilizza l’archiviazione su disco persistente per sopravvivere alle interruzioni dei processi e ai colli di bottiglia della rete.
- Cache di sessione : uno dei casi d’uso più evidenti per Redis è l’utilizzo come cache di sessione. L’uso di Redis rispetto ad altri archivi di sessioni è che Redis offre persistenza.
- Accesso basato su chiave: Redis si basa sul modello valore-chiave in cui i dati vengono archiviati e recuperati da Redis tramite chiave. L’accesso basato su chiavi consente tempi di accesso altamente efficienti e questo modello si associa naturalmente alla memorizzazione nella cache.
- Velocità: Può eseguire 110.000 SET al secondo e 81.000 GET al secondo.
- Supporta tipi di dati avanzati: Redis supporta la maggior parte dei tipi di dati come elenchi, set, set ordinati e hash.
- Le transazioni sono atomiche: ciò garantisce che il server Redis riceva un valore aggiornato se due client accedono ai dati contemporaneamente.
- Usi versatili: Redis può essere utilizzato per dati temporanei come memorizzazione nella cache, code di messaggistica e sessioni di applicazioni Web.
- Facile da configurare