Redis: lo store in-memory che ridefinisce il caching

Redis è un data structure server in-memory che supporta stringhe, liste, set, hash e sorted set, con operazioni atomiche, pub/sub e persistenza opzionale.

Open SourceWeb Open SourceRedisCacheIn-MemoryBackendStrutture Dati

Più di una cache

Nel panorama del software server, la cache è tradizionalmente un livello semplice: coppie chiave-valore in memoria per evitare accessi ripetuti al database. Memcached ha dominato questo spazio per anni con un modello volutamente minimale. Nel 2009 Salvatore Sanfilippo, sviluppatore italiano, rilascia Redis (Remote Dictionary Server) con un’ambizione diversa: costruire un server di strutture dati in-memory che vada ben oltre il semplice caching.

Redis opera interamente in RAM, il che garantisce latenze nell’ordine dei microsecondi per operazioni di lettura e scrittura. Ma la differenza fondamentale rispetto alle cache tradizionali sta nei tipi di dato supportati.

Strutture dati native

Redis non gestisce solo stringhe. Il server supporta nativamente liste (sequenze ordinate con push e pop da entrambe le estremità), set (insiemi non ordinati con operazioni di unione, intersezione e differenza), hash (mappe campo-valore, ideali per rappresentare oggetti), e sorted set — insiemi ordinati in cui ogni elemento ha un punteggio numerico che ne determina la posizione.

Ogni operazione su queste strutture è atomica: in un ambiente concorrente, non servono lock espliciti perché Redis è single-threaded e processa un comando alla volta. Questa semplicità architetturale elimina intere classi di bug legati alla concorrenza.

Il meccanismo di pub/sub permette ai client di iscriversi a canali e ricevere messaggi in tempo reale, trasformando Redis in un sistema di messaggistica leggero. I comandi EXPIRE e TTL consentono di impostare una scadenza su qualsiasi chiave, utile per sessioni temporanee e rate limiting.

Persistenza opzionale

Nonostante sia un database in-memory, Redis offre due meccanismi di persistenza su disco: RDB (snapshot periodici dell’intero dataset) e AOF (Append Only File, che registra ogni operazione di scrittura). L’operatore può scegliere il compromesso tra prestazioni e durabilità in base al caso d’uso.

Questa versatilità apre scenari che le cache tradizionali non coprono: code di lavoro (liste come code FIFO), classifiche in tempo reale (sorted set con punteggi), gestione di sessioni utente, contatori atomici per rate limiting, e filtri di unicità basati su set.

Redis è rilasciato sotto licenza BSD e scritto in C ANSI, senza dipendenze esterne. Un singolo binario, un file di configurazione, e un server pronto in secondi.

Link: redis.io

Vuoi supporto? Sei sotto attacco? Stato dei servizi
Vuoi supporto? Sei sotto attacco? Stato dei servizi