Redis

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

Cos'è Redis?

Redis, acronimo di Remote Dictionary Server, è un archivio dati veloce, open source, in memoria e di tipo chiave-valore. Il progetto fu avviato quando Salvatore Sanfilippo, lo sviluppatore originale di Redis, ha voluto migliorare la scalabilità della sua startup italiana. Da lì, ha sviluppato Redis, che ora viene utilizzato come database, cache, broker di messaggi e coda.

Redis offre tempi di risposta inferiori al millisecondo, consentendo milioni di richieste al secondo per applicazioni in tempo reale in settori come giochi, tecnologia pubblicitaria, servizi finanziari, sanità e IoT. Oggi, Redis è uno dei motori open source più popolari, definito ildatabase “Più amato" da Stack Overflow per cinque anni consecutivi. Per le sue prestazioni veloci, Redis è una scelta popolare percaching, gestione della sessione, giochi, classifiche, analisi dei dati in tempo reale, geospazialità, ride-hailing, chat/messaggistica, streaming multimediale e app pub/sub.

AWS offre due servizi completamente gestiti per eseguire Redis. Amazon MemoryDB for Redis è un servizio di database in memoria compatibile con Redis, durevole e che offre prestazioni ultraveloci. Amazon ElastiCache for Redis è un servizio di cache completamente gestito che accelera l'accesso ai dati da database primari e archivi dati con latenza di microsecondi. Inoltre, ElastiCache offre anche supporto per Memcached, un altro popolare motore di cache open source.

Per ulteriori informazioni su come potenziare le tue applicazioni con Amazon ElastiCache for Redis, consulta questo contenuto sulla tecnologia online

Vantaggi di Redis

Prestazioni

Tutti i dati Redis risiedono in memoria, il che abilita l'accesso ai dati a bassa latenza e velocità effettiva elevata. A differenza dei database tradizionali, gli archivi dati in memoria non richiedono un viaggio su disco, riducendo la latenza del motore a dei microsecondi. Per questo motivo, gli archivi dati in memoria possono supportare una quantità di operazioni di ordine di grandezza superiore e tempi di risposta più rapidi. Il risultato sono prestazioni incredibilmente veloci con operazioni di lettura e scrittura medie che richiedono meno di un millisecondo e supporto per milioni di operazioni al secondo.

Strutture dati flessibili

A differenza di altri datastore chiave-valore che offrono strutture dati limitate, Redis dispone di un'ampia varietà di strutture dati per soddisfare le esigenze dell’applicazione. 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 l'archiviazione 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
  • Streams: una coda del Messaggio della struttura di dati di registro
  • Geospazialità: mappe di voci basate su longitudine/latitudine, "vicinanza"
  • JSON: un oggetto semi-strutturato nidificato di valori denominati che supporta numeri, stringhe, valori booleani, array e altri oggetti

Semplicità e intuitività

Redis ti abilita a scrivere codice tradizionalmente complesso con meno righe più semplici. Con Redis, scrivi meno righe di codice per archiviare, accedere e utilizzare i dati nelle tue applicazioni. La differenza è che gli sviluppatori che usano Redis possono utilizzare una semplice struttura di comandi rispetto ai linguaggi di query dei database tradizionali. Ad esempio, è possibile utilizzare la struttura dati hash Redis per spostare i dati in un archivio dati con una sola riga di codice. 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).

Redis non è stato creato per essere un database durevole e coerente. Se hai bisogno di un database durevole e compatibile con Redis, fai riferimento ad Amazon MemoryDB for Redis. Dal momento che MemoryDB utilizza un registro transazionale durevole che archivia i dati su più zone di disponibilità (AZ), puoi utilizzarlo come database primario. MemoryDB è stato creato appositamente per abilitare gli sviluppatori all'utilizzo di API Redis senza preoccuparsi di gestire cache e database separati o l'infrastruttura sottostante.

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.

Open source

Redis è un progetto open source supportato da una vivace community, tra cui AWS. 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

Perl

Go

Ruby

C/C#/C++

JavaScript

Node.js

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. Funzionano con database relazionali o di chiave-valore per migliorare le prestazioni, come MySQL, PostgreSQL, Aurora, Oracle, SQL Server, DynamoDB e altri.

Utilizzo di Redis su AWS

AWS offre due servizi completamente gestiti compatibili con Redis: Amazon MemoryDB for Redis e Amazon ElastiCache for Redis.

Amazon MemoryDB for Redis

Amazon MemoryDB for Redis è un servizio di database in memoria compatibile con Redis, durevole e che offre prestazioni ultraveloci. È costruito appositamente per le applicazioni moderne create con architetture di microservizi. Amazon MemoryDB archivia i dati in modo duraturo su più zone di disponibilità (AZ) utilizzando un registro transazionale Multi-AZ per abilitare un rapido failover, ripristino del database e riavvio dei nodi. Con Amazon MemoryDB, tutti i tuoi dati vengono archiviati in memoria, il che ti consente di ottenere una latenza di lettura di microsecondi e di scrittura di millisecondi a una cifra e una velocità effettiva elevata. 

Per ulteriori informazioni su Amazon MemoryDB for Redis, controlla la  documentazione MemoryDB.

Amazon ElastiCache for Redis

Amazon ElastiCache for Redis è un servizio di memorizzazione nella cache completamente gestito che semplifica la configurazione, il funzionamento e il dimensionamento di una cache nel cloud. Con ElastiCache for Redis, puoi accelerare la velocità dell’applicazione e sbloccare la latenza di lettura e scrittura di microsecondi memorizzando nella cache i dati da database e datastore primari. ElastiCache for Redis è disponibile per la prova gratuita con il Piano gratuito di AWS

Step 1 - Sign up for an Amazon Web Services account

Registrati

Ottieni l'accesso ad Amazon MemoryDB e Amazon ElastiCache.
Impara ad usare Amazon ElastiCache for Redis

Inizia a usare Amazon ElastiCache

Inizia a usare ElastiCache per Redis

Inizia a costruire con Amazon MemoryDB

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