Redis è uno store di strutture dati chiave-valore in memoria rapido e open source. Redis offre una serie di strutture dati in memoria molto versatili, che permettono di creare un'ampia gamma di applicazioni personalizzate. I principali casi d'uso per Redis sono il caching, la gestione di sessioni, servizi pub/sub e graduatorie. Si tratta dello store chiave-valore più usato. Dispone di licenza BSD, è scritto in C, il suo codice è ottimizzato e supporta diverse sintassi di sviluppo. Redis è un acronimo e sta per REmote DIctionary Server.

Data la velocità e la semplicità di utilizzo, Redis è una scelta molto comune per applicazioni Web, videogiochi, tecnologie pubblicitarie, IoT e app per dispositivi mobili che necessitano di elevate prestazioni. AWS fornisce il supporto per Redis tramite un servizio di database ottimizzato e completamente gestito, Amazon ElastiCache per Redis, e permette ai clienti di eseguire le proprie istanze di Redis in EC2.

Amazon EC2 Container Service

Nozioni di base
Vantaggi_ElastiCache_prestazioni

Tutti i dati gestiti da Redis si trovano nella memoria principale del server, mentre la maggior parte dei sistemi di gestione di database memorizzano i dati su disco o su SSD. Poiché non devono raccogliere i dati su un disco, i database in memoria come Redis non accumulano alcun ritardo e possono usare algoritmi più semplici per accedere ai dati, sfruttando di meno la CPU. In genere, l'esecuzione di un'operazione richiede meno di un millisecondo.

Vantaggi_ElastiCache_struttura_dati

Redis consente agli utenti di memorizzare le chiavi che consentono la mappatura ai differenti tipi di dati. L'elemento fondamentale dei tipi di dati è String, la stringa, che può essere composta da dati di testo o binari con una dimensione massima di 512 MB. Redis supporta inoltre altri tipi di dati: List, elenchi di stringhe nell'ordine di aggiunta; Set, stringhe prive di ordine; Sorted Set, set di stringhe ordinate in base a un determinato valore; Hash, che memorizzano un elenco di campi e valori; HyperLogLog, che conta gli elementi univoci in un dataset. Quasi tutti i tipi di dati possono essere salvati in memoria con Redis.

Vantaggi_ElastiCache_semplicità_di_utilizzo

Redis offre una serie di strumenti che semplificano sviluppo e funzionamento rendendoli più rapidi; tra questi Pub/Sub, per pubblicare messaggi su diversi canali per l'invio a utenti iscritti al servizio, ideale per sistemi di chat e di messaggistica; chiavi TTL con una scadenza predefinita dopo la quale si cancellano automaticamente, per non intasare il database con dati non necessari; contatori atomici che assicura che la race condition non crei risultati discordanti; Lua, una sintassi di scripting potente ma leggera.

Vantaggi_ElastiCache_replica

Redis impiega un'architettura master-slave e supporta la replica asincrona, in cui i dati vengono replicati su diversi server slave. In questo modo è possibile ottenere migliori prestazioni in lettura (poiché le richieste vengono suddivise tra i diversi server) e ripristino rapido in caso di interruzione del server principale.

Per fornire la massima durabilità, Redis supporta sia snapshot point-in-time (copiando i dataset di Redis su disco) sia la creazione di file AOF (Append Only File) in cui vengono memorizzate tutte le modifiche ai dati sul disco. Entrambi i metodi permettono il ripristino rapido dei dati di Redis in caso di interruzione.

Vantaggi_ElastiCache_supporto_sintassi

Per gli sviluppatori Redis sono disponibili più di cento client open source. Tra i linguaggi supportati sono presenti Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, R, Go e molti altri.

Redis a monte di un altro database fornisce un servizio di caching in memoria estremamente performante, che riduce latenza, potenzia throughput e alleggerisce il carico dal database relazionale o NoSQL in uso.

Redis è un servizio ideale per le attività di gestione delle sessioni. È sufficiente configurare Redis come store chiave-valore e impostare una scadenza sulle chiavi di sessione per gestire le informazioni di sessione al meglio. La gestione di sessioni è un'attività vitale in applicazioni online, tra cui videogiochi, siti Web di e-commerce e piattaforme social.

Utilizzando la struttura dati Sorted Set di Redis, gli elementi di un elenco vengono ordinate in base a determinati punteggi. In questo modo è semplicissimo creare graduatorie dinamiche che mostrano chi sta vincendo a un videogioco, i post più letti su un forum o qualsiasi genere di classifica.

Redis è in grado di monitorare e, se necessario, limitare la frequenza di determinati eventi. La funzione di conteggio offerta da Redis, associata con una chiave API client, permette di contare le richieste di accesso in un determinato intervallo di tempo, eseguendo un'azione specifica nel caso la soglia venga superata. I limitatori di frequenza sono solitamente utilizzati per limitare il numero di post su un forum, restringere l'utilizzo di risorse e contenere le cause di spam.

La struttura dati List di Redis semplifica l'implementazione di code persistenti e semplici da gestire. List consente atomicità nelle operazioni e funzionalità di blocco, perciò può essere utilizzata per diverse applicazioni che richiedono affidabilità nella gestione di messaggi o elenchi circolari.

Redis supporta standard PUB/SUB e criteri di ricerca. In questo modo è in grado di supportare chat veloci, flussi di commenti in tempo reale e intercomunicazione di server. Lo standard PUB/SUB può anche essere impiegato per attivare azioni in base ad eventi pubblicati.

Amazon ElastiCache per Redis è un servizio di strutture dati in memoria completamente gestito compatibile con Redis.