Redis, abbreviazione di Remote Dictionary Server, è un archivio di strutture dati in memoria chiave-valore open source con licenza BSD, scritto in linguaggio C da Salvatore Sanfillipo ed è stato rilasciato per la prima volta il 10 maggio 2009. A seconda di come è configurato , Redis può agire come un database, una cache o un broker di messaggi. È importante notare che Redis è un sistema di database NoSQL. Ciò implica che, a differenza dei sistemi di database basati su SQL (Structured Query Language) come MySQL, PostgreSQL e Oracle, Redis non archivia i dati in schemi di database ben definiti che costituiscono tabelle, righe e colonne. Invece, Redis archivia i dati in strutture di dati che lo rendono molto flessibile da usare. L'hosting di ScaleGrid per Redis™* consente di automatizzare le operazioni che richiedono tempo per una varietà di casi d'uso Redis diversi. In questo blog, descriviamo i principali casi d'uso Redis in base ai diversi tipi di struttura dei dati principali.
Strutture dati in Redis
Diamo un'occhiata ad alcuni dei tipi di dati supportati da Redis. In Redis abbiamo stringhe, elenchi, insiemi, insiemi ordinati e hash, che tratteremo in questo articolo. Inoltre, abbiamo altri tipi di dati come bitmap, hyperloglog e indici geospaziali con query e flussi di raggio. Sebbene ci siano alcuni strumenti GUI Redis scritti dalla comunità Redis, la riga di comando è di gran lunga il client più importante, a differenza dei popolari utenti di database SQL che spesso preferiscono i sistemi di gestione della GUI, ad esempio, phpMyAdmin per MySQL e PgAdmin per PostgreSQL.
Diamo un'occhiata più da vicino ai tipi di dati che esistono in Redis.
Corde Redis
Le stringhe Redis sono il tipo più elementare di valore Redis sfruttato da tutti gli altri tipi di struttura dati e sono abbastanza simili alle stringhe in altri linguaggi di programmazione come Java o Python. Le stringhe, che possono contenere qualsiasi tipo di dati, sono considerate binarie sicure e hanno una lunghezza massima di 512 MB. Ecco un paio di comandi utili per le stringhe Redis:
Per memorizzare una stringa 'john ' sotto una chiave come 'studente' in Redis, esegui il comando:
SET "student" "john"
Per recuperare la stringa, usa il comando GET come mostrato:
OTTIENI "studente"
Per eliminare la stringa contenuta nella chiave usa il comando DEL:
DEL "studente"
Casi d'uso delle stringhe Redis
- Cache sessione: Molti siti Web utilizzano Redis Strings per creare una cache di sessione per velocizzare l'esperienza del sito Web memorizzando nella cache frammenti o pagine HTML. Poiché i dati vengono archiviati temporaneamente nella RAM, questo attributo rende Redis una scelta perfetta come cache di sessione. È in grado di memorizzare temporaneamente dati specifici dell'utente, ad esempio articoli archiviati in un carrello in un negozio online, il che è fondamentale in quanto i tuoi utenti non perdono i loro dati nel caso in cui si disconnettono o perdano la connessione.
- Code: Qualsiasi applicazione che si occupa di congestione del traffico, messaggistica, raccolta dati, gestione dei lavori o instradamento dei packer dovrebbe prendere in considerazione una coda Redis, in quanto ciò può aiutarti a gestire le dimensioni della coda in base alla velocità di arrivo e partenza per la distribuzione delle risorse.
- Utilizzo e fatturazione a consumo: Un caso d'uso meno noto per Redis Strings è la misurazione in tempo reale per i modelli di prezzo basati sul consumo. Ciò consente alle piattaforme SaaS che fatturano in base all'utilizzo effettivo di misurare l'attività dei propri clienti, ad esempio nel settore delle telecomunicazioni, dove possono addebitare messaggi di testo o minuti.
Elenchi Redis
Gli elenchi contengono stringhe ordinate in base al loro ordine di inserimento. Con Redis Lists, puoi aggiungere elementi in testa o in coda agli elenchi, il che è molto utile per mettere in coda i lavori. Se ci sono lavori più urgenti che devono essere eseguiti, questi possono essere spostati davanti ad altri lavori con priorità più bassa nella coda. Useremmo il comando LPUSH per inserire un elemento all'inizio, oa sinistra della stringa, e il comando RPUSH per inserire alla coda, oa destra della nostra stringa. Diamo un'occhiata a un esempio:
elenco LPUSH x # ora l'elenco è "x"
LPUSH list y # ora l'elenco è "y","x"
elenco RPUSH z # ora l'elenco è "y","x","z" (notare come l'elemento 'z' è stato aggiunto alla fine dell'elenco dal comando RPUSH)
Redis List Use Case
- Siti di social network: Le piattaforme social come Twitter utilizzano le liste Redis per popolare le loro sequenze temporali o i feed della home page e possono personalizzare la parte superiore dei loro feed con tweet o storie di tendenza.
- Feed RSS: Crea feed di notizie da fonti personalizzate in cui puoi estrarre gli ultimi aggiornamenti e consentire ai follower interessati di iscriversi al tuo feed RSS.
- Classifiche: Forum come Reddit e altre piattaforme di voto sfruttano gli elenchi Redis per aggiungere articoli alla classifica e ordinare in base alle voci più votate.
Scopri come creare il tuo feed Twitter nei nostri tweet di memorizzazione nella cache utilizzando il post del blog Node.js, Redis e Socket.io.
Principali casi d'uso di #Redis in base ai tipi di struttura dei dati principaliFai clic per twittareSet Redis
I Redis Set sono potenti tipi di dati che supportano potenti operazioni come intersezioni e unioni. Non sono in alcun ordine e vengono solitamente utilizzati quando si desidera eseguire un controllo e vedere le relazioni tra varie variabili. I set sono ragionevolmente veloci e, indipendentemente dal numero di elementi che hai memorizzato, ci vorrà lo stesso tempo per aggiungere o rimuovere elementi in un set. Inoltre, i set non consentono chiavi duplicate o membri duplicati, quindi una chiave aggiunta più volte in un set verrà semplicemente ignorata. Questo è guidato da una funzione chiamata SADD che evita la duplicazione di più voci simili. L'attributo SADD può essere utilizzato durante il controllo di valori univoci e può anche essere utilizzato per la pianificazione di lavori in esecuzione in background, inclusi i lavori cron che sono script automatizzati.
Questi sono particolarmente utili per analizzare il comportamento dei clienti in tempo reale per il tuo sito di shopping online. Ad esempio, se gestisci un negozio di abbigliamento online, i Redis Sorted Sets utilizzano tecniche di corrispondenza delle relazioni come unioni, intersezioni e sottrazioni (comunemente applicate nei diagrammi di Venn) per fornire un quadro accurato del comportamento dei clienti. Puoi recuperare dati sui modelli di acquisto tra i sessi, quali prodotti di abbigliamento vendono di più e in quali orari si registrano le vendite più elevate.
Redis imposta i casi d'uso
- Analisi delle vendite e-commerce: Molti negozi online utilizzano i set Redis per analizzare il comportamento dei clienti, come ricerche o acquisti per una specifica categoria o sottocategoria di prodotti. Ad esempio, il proprietario di una libreria online può scoprire quanti clienti hanno acquistato libri di medicina in Psicologia.
- Tracciamento dell'indirizzo IP: I set Redis sono un ottimo strumento per gli sviluppatori che desiderano analizzare tutti gli indirizzi IP che hanno visitato una pagina di un sito Web specifico o un post di blog e essere in grado di ignorare tutti i duplicati per i visitatori unici con la loro funzione SADD.
- Filtro dei contenuti inappropriato: Per qualsiasi app che raccolga l'input dell'utente, è una buona idea implementare il filtraggio dei contenuti per le parole inappropriate e puoi farlo con Redis Sets aggiungendo le parole che desideri filtrare a una chiave SET e al comando SADD.
Set ordinati
Come suggerisce il nome, i Redis Ordinati Set sono una raccolta di stringhe che assegnano un ordine ai tuoi elementi e sono una delle strutture dati più avanzate in Redis. Questi sono simili ai set Redis, solo che i set non hanno ordine mentre i set ordinati associano ogni membro a un punteggio. I set ordinati sono noti per essere molto veloci, poiché puoi restituire elenchi ordinati e accedere agli elementi nel più breve tempo possibile.
Redis Ordinati Sets Casi d'uso
- Piattaforme di domande e risposte: Molte piattaforme di domande e risposte come Stack Overflow e Quora utilizzano Redis Sorted Sets per classificare le risposte più votate per ciascuna domanda proposta per garantire che i contenuti della migliore qualità siano elencati nella parte superiore della pagina.
- Tabelloni segnapunti delle app di gioco: Le app di giochi online sfruttano i Redis Sorted Sets per mantenere i loro elenchi di punteggi più alti, poiché i punteggi possono essere ripetuti, ma le stringhe che contengono i dettagli utente univoci non possono.
- Servizio di pianificazione delle attività: I set ordinati Redis sono un ottimo strumento per un servizio di pianificazione delle attività, poiché puoi associare un punteggio per classificare la priorità di un'attività nella tua coda. Per qualsiasi attività che non ha un punteggio annotato, puoi utilizzare l'opzione PESI su un valore predefinito di 1.
- Hashing geografico: L'API Redis geo indexing utilizza un set ordinato per la tecnica Geo Hash che consente di indicizzare le posizioni in base a latitudine e longitudine, trasformando dati multidimensionali in dati lineari.
Hash Redis
Gli hash Redis sono mappe tra campi stringa e valori stringa. Questo è il tipo di dati da utilizzare se è necessario creare essenzialmente un contenitore di campi univoci e i relativi valori per rappresentare gli oggetti. Gli hash ti consentono di memorizzare una discreta quantità di campi, fino a 232 – 1 coppie di valori di campo (più di 4 miliardi), occupando pochissimo spazio. Dovresti utilizzare gli hash Redis quando possibile, poiché puoi utilizzare una piccola istanza Redis per archiviare milioni di oggetti. Puoi utilizzare le operazioni di base dei comandi hash, come get, set, esiste, oltre a molte operazioni avanzate.
Casi d'uso degli hash Redis
- Profili utente: Molte applicazioni web utilizzano Redis Hash per i propri profili utente, poiché possono utilizzare un unico hash per tutti i campi utente, come nome, cognome, email, password, ecc.
- Post degli utenti: Le piattaforme social come Instagram sfruttano Redis Hash per mappare tutte le foto o i post degli utenti archiviati a un singolo utente. Il meccanismo di hashing consente loro di cercare e restituire valori molto rapidamente, inserire i dati in memoria e sfruttare la persistenza dei dati in caso di guasto di uno dei loro server.
- Memorizzazione di metriche multi-tenant: Le applicazioni multi-tenant possono sfruttare gli hash Redis per registrare e archiviare i propri prodotti e le metriche di vendita in modo da garantire una solida separazione tra ciascun tenant, poiché gli hash possono essere codificati in modo efficiente in uno spazio di memoria molto ridotto.
Chi usa Redis?
Redis ha trovato un'enorme quota di mercato nei settori dei viaggi e dell'ospitalità, forum della community, social media, SaaS ed e-commerce, solo per citarne alcuni. Alcune delle aziende leader che utilizzano Redis includono Pinterest, Uber, Slack, Airbnb, Twitter e Stack Overflow. Ecco alcune statistiche sulla popolarità di Redis oggi:
- 4.107 aziende hanno segnalato di utilizzare Redis su StackShare
- 8.759 sviluppatori hanno dichiarato di utilizzare Redis su StackShare
- 38.094 utenti GitHub hanno aggiunto Redis a Speciali
- N° 8 database classificato su DB-Engines con un punteggio di 144,08