Cos’è Redis e come utilizzarlo per velocizzare il tuo sito web
Con tutta la confusione sul web, è difficile trovare una buona risorsa che spieghi cos’è una tecnologia o a cosa serve, inclusa Redis. Il mio obiettivo con questo post è renderlo il più semplice possibile.
Dopo aver letto questo articolo, avrai una comprensione di base di cos’è Redis, come funziona e quando usarlo.
Cos’è Redis?
Definizione di Redis: Redis è un archivio di strutture dati chiave-valore in memoria, open-source e ad alta velocità.
Sì, certo… e che significa?
In poche parole, REDIS ti consente di memorizzare coppie chiave-valore nella RAM. Poiché accedere alla RAM è 150.000 volte più veloce che accedere a un disco e 500 volte più veloce che accedere a un disco SSD, significa velocità.
Ma usiamo già la RAM per la maggior parte delle nostre operazioni!
Sì, è vero, ma quando si tratta di cache o interazioni con il database, utilizziamo i dischi per impostazione predefinita. Immagina di accedere a un database per leggere 10.000 record. Se i dati sono memorizzati su disco, ci vorranno in media 30 secondi, mentre ci vogliono circa 0,0002 secondi per leggere dalla RAM.
Questo significa che Redis è un sistema di lettura/scrittura super veloce, ma poiché è memorizzato nella RAM è volatile.
Aspetta! Quindi perderemo i nostri dati?
Per evitare la perdita di dati, c’è un modulo di persistenza integrato che scrive lo stato in memoria su file di dump su disco in determinate occasioni. I file di dump vengono caricati quando il sistema si avvia e, una volta operativo, i dati sono disponibili per le manipolazioni. Quindi, nessuna perdita di dati.
Possiamo giocare con diverse configurazioni con più istanze, permettendoci un uptime costante con i cosiddetti Sentinels e l’architettura Master-slave. Ne parleremo più avanti in questo post.
Ma cosa significa Redis? È un acronimo per REmote DIctionary Server.
In altre parole, è uno strumento che ti permette di avere un database memorizzato nella tua RAM.
Dove e quando usare Redis?
Poiché Redis è estremamente veloce, è principalmente utilizzato per scopi di caching. È qui che Redis brilla di più, poiché offre una varietà di tipi che può memorizzare con la sua struttura a dizionario.
Detto ciò, possiamo usare Redis per memorizzare intere pagine che ricevono molto traffico e contenuti statici. Se la pagina stessa è soggetta a cambiamenti o il contenuto viene generato dinamicamente, allora non dovrebbe essere memorizzata in cache in nessun caso, indipendentemente dal fatto che stiamo usando Redis o Memcached. Se la pagina contiene principalmente contenuti statici o il contenuto viene aggiornato ogni x periodo di tempo, allora possiamo memorizzare in cache quella pagina e servirla in un attimo!
Quindi, il primo utilizzo di Redis è il Full Page Cache (FPC).
Un altro utilizzo è la memorizzazione delle sessioni. A differenza di Memcached che non ha alcuna persistenza, Redis ce l’ha e ciò permette la memorizzazione delle sessioni. Gestire le sessioni con Redis migliora l’esperienza utente durante l’interazione con il sito.
La persistenza è importante per la memorizzazione delle sessioni, per evitare la perdita di dati in sezioni critiche dell’interazione utente. Ad esempio, elaborare un pagamento, aggiungere un articolo al carrello o richiedere qualsiasi azione come utente autenticato.
Quindi, il secondo utilizzo è il Session Cache.
Ecco un buon elenco di altre opzioni su quando usare Redis.
Ora che sappiamo cos’è Redis, dove e perché dovremmo usarlo, è il momento di diventare un po’ più tecnici.
Redis funziona come un processo, allo stesso modo di MySQL, PHP, Apache e tutti gli altri servizi. Utilizza molta memoria RAM e, se il server ha bisogno di più spazio per le sue operazioni pesanti, potrebbe decidere di terminare il processo di Redis. In questo scenario, sperimenteremmo un downtime del processo con una potenziale perdita di dati. Per prevenire ciò, Redis ha un’architettura Master-Slave integrata.
Questa architettura ci consente di avere processi aggiuntivi che monitorano il nostro processo principale. I processi slave imitano i suoi comandi e copiano occasionalmente il file di dump del Master per mantenere la coerenza tra i processi. Questi processi di monitoraggio sono chiamati Slaves, mentre quello principale è il Master.
Quando il processo principale viene terminato, uno degli Slaves diventa il Master e gestisce tutte le richieste mentre il processo Master viene riavviato. Una volta che il Master è di nuovo operativo, prende il file di dump dal Master temporaneo e lo utilizza come base. Il processo principale viene reintegrato come Master mentre il Master temporaneo torna ad essere uno Slave.
Ma come sappiamo quando il processo principale è giù? E come sappiamo quale Slave dovrebbe diventare master?
Ecco dove entrano in gioco i Sentinels. I Sentinels sono i processi che hanno il compito specifico di verificare se le istanze di Redis funzionano. Sono responsabili di:
- Rilevare se il Master è giù;
- Selezionare chi dovrebbe essere il master temporaneo;
- Monitorare quando il Master torna e dirgli quale file di dump caricare.
Sentinels, credo che il nome dica tutto.
Una configurazione generale utilizza di solito un Master, due Slaves e tre Sentinels.
E adesso? Redis ha una comunità vivace e una documentazione ben scritta. Se vuoi provarlo, troverai molto supporto sul loro sito ufficiale.
Iniziare con Redis dipende dalla tecnologia che stai utilizzando. Diversi linguaggi di programmazione hanno diversi modi di interagire con Redis. La loro documentazione copre tutto. Puoi trovare un elenco completo di client Redis online.