Redis

Rapido datastore in memoria open source per l'utilizzo con database, caching, broker di messaggistica e code.

Cos'è Redis?

Redis è un datastore in memoria rapido, open source e di tipo chiave-valore per l'utilizzo con database, caching, broker di messaggistica e code. Il progetto è iniziato quando Salvatore Sanfilippo, lo sviluppatore originale di Redis, stava tentando di migliorare la scalabilità della sua startup italiana. Redis fornisce oggi tempi di risposta inferiori al millisecondo, consentendo milioni di richieste al secondo per applicazioni in tempo reale nei campi di videogiochi, tecnologie pubblicitarie, servizi finanziari, settore sanitario e IoT. Redis è una scelta popolare per caching, gestione di sessioni, videogiochi, graduatorie, analisi in tempo reale, geospazialità, ride-hailing, chat/messaggistica, streaming multimediale e app pub/sub.

Come funziona Redis?

Tutti i dati Redis risiedono in-memory, a differenza dei database che memorizzano i dati su disco o SSD. Eliminando l'esigenza di accedere ai dischi, i datastore in-memory come Redis evitano i ritardi dovuti ai tempi di ricerca e sono in grado di accedere ai dati in pochi microsecondi. Redis presenta versatili strutture dei dati, elevata disponibilità, geospazialità, scripting Lua, transazioni, persistenza su disco e supporto di cluster, facilitando la creazione in tempo reale di app in scala Internet.

Redis vs. Memcached

Sia Redis che MemCached sono datastore in memoria open source. Memcached, un servizio cache di memoria distribuito ad alte prestazioni, è stato pensato per essere semplice, mentre Redis offre una ricca serie di funzionalità che lo rendono efficace per gli usi più svariati. Per un confronto delle caratteristiche più dettagliato per aiutarti a decidere, consulta Redis vs Memcached.  Entrambi lavorano con database relazionali o di tipo chiave-valore per migliorare le prestazioni, come MySQL, Postgres, Aurora, Oracle, SQL Server, DynamoDB e altri ancora. 

Novità di Redis 5.0

Redis 5, e ora Redis 5.0.3, è la più recente versione GA di Redis open source. Dalla sua release iniziale nel 2009, Redis open source è stato sviluppato al di là di una tecnologia di caching per diventare un datastore in memoria rapido e facile da usare che assicura strutture di dati versatili e tempi di risposta inferiori al millisecondo. Redis ha conseguito un risultato epocale con la release della versione 5.0 che comprende una serie di funzioni avanzate e miglioramenti. La vera notizia, in questo caso, è l’introduzione di Streams, la prima struttura dati completamente nuova in Redis dai tempi di HyperLogLog. Questa release ha aggiunto anche altri comandi per Sorted Sets e nuove funzionalità per le API dei moduli.

Amazon ElastiCache per Redis

Redis interamente gestito con crittografia, ridimensionamento dei cluster online, elevata disponibilità e conformità.

Vantaggi di Redis

Datastore in memoria

Tutti i dati di Redis si trovano nella memoria principale del server, a differenza di quanto avviene nei database come PostgreSQL, Cassandra, MongoDB e altri, che memorizzano la maggior parte dei dati su disco o su SSD. Nei database tradizionali basati su disco, i dati vengono trasferiti da e verso lo storage per ogni operazione, mentre i datastore in memoria come Redis non prevedono questa operazione. Pertanto, questo consente loro di supportare una quantità di operazioni di ordine di grandezza superiore e tempi di risposta più rapidi. Il risultato è costituito da prestazioni incredibilmente elevate con tempi medi di lettura e scrittura inferiori al millisecondo e supporto per milioni di operazioni al secondo.

Strutture dati flessibili

A differenza dei semplicistici datastore chiave-valore che offrono strutture dati limitate, Redis offre strutture dati adatte a diverse applicazioni. I tipi di dati Redis includono:

  • String (stringhe): testo o dati binari di dimensioni fino a 512 MB
  • List (elenchi): una raccolta di stringhe nell’ordine in cui erano state aggiunte
  • Set: una raccolta non ordinata di stringhe con capacità di intersezione, unione e differenza di altri tipi set
  • Sorted Set (set memorizzati): set ordinati per un valore
  • Hash: una struttura di dati per lo storage di un elenco di campi e valori
  • Bitmap: un tipo di dati che offre operazioni a livello di bit
  • HyperLogLog: una struttura di dati probabilistica per la stima di voci uniche in un dataset

Semplicità e intuitività

Redis semplifica la creazione di codice perché permette di memorizzare, visualizzare e utilizzare i dati nelle applicazioni impiegando un numero inferiore di righe. Ad esempio, se i dati di un'applicazione sono memorizzati in mappe hash e si desidera memorizzare tali dati in un datastore, è possibile utilizzare la struttura dei dati hash in Redis. Per eseguire un’attività simile su un datastore senza strutture dati hash, sarebbero necessarie molte linee di codice aggiuntive per eseguirne la conversione da un formato all'altro. Redis include strutture dati native e diverse opzioni che permettono di gestire e interagire con i dati. 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.

Replica e persistenza

Redis impiega un'architettura primary-replica e supporta la replica asincrona, in cui i dati vengono replicati su diversi server appositi. In questo modo è possibile ottenere migliori prestazioni in lettura (poiché le richieste vengono suddivise tra i diversi server) e ripristino in caso di interruzione del server principale. Per la persistenza, Redis supporta backup point-in-time (copia su disco del dataset Redis).

Disponibilità e scalabilità elevate

Redis offre un'architettura primary-replica in un singolo nodo principale o una topologia a cluster. In questo modo è possibile creare soluzioni dotate di elevata disponibilità e prestazioni costanti e affidabili. Le dimensioni di un cluster possono essere modificate in vari modi, secondo modelli di scalabilità orizzontale e verticale. Le risorse di un cluster potranno variare di pari passo con la domanda.

Estensibilità

Redis è un progetto open source sostenuto da una community molto attiva. Non esistono vincoli di fornitore o di tecnologia; Redis è basato su standard aperti, supporta formati di dati aperti e funziona con diversi client.

Caching

Redis è la soluzione ideale per implementare caching in memoria ad elevata disponibilità e ridurre la latenza in accesso ai dati, potenziare il throughput e alleggerire il carico da applicazioni e database relazionali o NoSQL. Il servizio è in grado di servire elementi richiesti con maggiore frequenza con tempi di risposta inferiori al millisecondo e di ricalibrare le risorse in base al carico senza dover investire in costosi back-end. Il caching di Redis è ideale in casi d'uso quali memorizzazione di risultati di query di database, sessioni persistenti, pagine Web e oggetti utilizzati di frequente, quali immagini, file e metadata.

Chat, messaggistica e code

Redis supporta la messaggistica pub/sub con criteri di ricerca e diversi tipi di strutture dati, tra cui elenchi e hash. In questo modo è in grado di offrire prestazioni elevate per chat, flussi di commenti in tempo reale, feed di social network e intercomunicazione di server. La struttura dati List di Redis semplifica l'implementazione di code 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.

Classifiche per videogiochi

Redis è un servizio molto utilizzato tra gli sviluppatori di videogiochi per la creazione di classifiche in tempo reale. È sufficiente utilizzare la struttura di dati Sorted Set di Redis, che distingue gli elementi univoci mantenendo un elenco ordinato in base ai punteggi degli utenti. In questo modo, la classifica viene aggiornata simultaneamente alla variazione dei punteggi dei giocatori. Sorted Set può essere utilizzata anche per gestire dati di serie temporali utilizzando time stamp come punteggio.

Memorizzazione

Redis, in quanto datastore in memoria dotato di disponibilità e persistenza elevate, è una soluzione molto utilizzata tra gli sviluppatori a cui occorre memorizzare e gestire dati di sessione per applicazioni su Internet. Redis offre latenza nell'ordine dei millisecondi, scalabilità e resilienza, tutti elementi fondamentali per gestire dati di sessione quali profili utente, credenziali, stati di sessione e personalizzazioni specifiche per ciascun utente.

Streaming di contenuti multimediali

Redis offre un datastore in memoria rapido ideale per lo streaming in tempo reale. Il servizio può essere utilizzato per memorizzare metadati di profili utente e cronologie di visualizzazione, token e informazioni di autenticazione per milioni di utenti e file manifest con cui permettere a reti per la distribuzione di contenuti di trasmettere video a milioni di utenti contemporaneamente, su computer e dispositivi mobili.

Dati geospaziali

Redis offre operatori e strutture dati in memoria dedicati per gestire dati geospaziali reali su vasta scala e con la massima rapidità. Grazie a comandi quali GEOADD, GEODIST, GEORADIUS e GEORADIUSBYMEMBER, memorizzazione, elaborazione e analisi di dati geospaziali in Redis è semplice e veloce. Il servizio può anche essere utilizzato per aggiungere alle applicazioni caratteristiche basate sulla posizione, quali tempi di percorrenza, distanza percorsa e punti di interesse.

Machine Learning

Le moderne applicazioni basate sui dati necessitano di apprendimento automatico per automatizzare le decisioni ed elaborare in modo rapido grandi quantità di dati di vario genere e con varie frequenze di aggiornamento. In casi d'uso quali servizi finanziari, rilevamento di attività fraudolente nel settore ludico, inoltro di offerte in tempo reale per ad tech e creazione di corrispondenze in app di condivisione o appuntamenti, la possibilità di elaborare dati in tempo reale e prendere decisioni in pochi millisecondi è un fattore critico. Redis offre un datastore in memoria dotato di eccezionale velocità per creare, addestrare e distribuire modelli di apprendimento automatico in tempi ridotti.

Analisi in tempo reale

Redis può essere utilizzato con soluzioni di streaming quali Apache Kafka e Amazon Kinesis come datastore in memoria per acquisire, elaborare e analizzare dati in tempo reale con latenza inferiore al millisecondo. Si tratta di una soluzione ideale nei casi d'uso di analisi in tempo reale, ad esempio per social media, targeting di inserzioni, personalizzazione e IoT.

Supporto Redis per altre lingue

Redis supporta la maggior parte delle sintassi e dei protocolli di programmazione più importanti, tra cui:

Python

Java

PHP

Servizio Redis completamente gestito in AWS

Amazon offre un servizio completamente gestito, Amazon ElastiCache per Redis, disponibile in prova senza alcun costo nell'ambito del piano gratuito di AWS. Amazon ElastiCache per Redis consente di configurare, utilizzare e dimensionare le distribuzioni Redis nel cloud con la massima semplicità. Con Amazon ElastiCache, è possibile distribuire implementazioni Redis scalabili su Internet in pochi minuti, impiegando hardware poco costoso e ridimensionabile.
Comincia a usare Amazon ElastiCache per Redis gratuitamente in tre semplici passi:
Amazon ElastiCache per Redis

Registrati

Ottieni l'accesso al piano gratuito di Amazon ElastiCache.
Apprendi le nozioni di base su Amazon ElastiCache per Redis

Impara con semplici tutorial

Esplora come creare un cluster Redis.
Inizia a usare ElastiCache per Redis

Inizia a creare

Inizia a creare con l'aiuto della Guida per l'utente.