Quando utilizzare un archivio chiave / valore come Redis anziché / lungo un database SQL?


166

Ho letto grandi cose su negozi chiave / valore come Redis, ma non riesco a capire quando è il momento di usarlo in un'applicazione.

Supponiamo che io stia progettando un'applicazione basata sul web; So quale stack userò per il front-end, il back-end, i database, ecc. Quali sono alcuni scenari in cui andrei "oh abbiamo anche bisogno di Redis per X, Y o Z."

Gradirei esempi node.js e esempi non-node.js.


Risposte:


102

Non riesco a capire quando è il momento di usarlo in un'applicazione.

Ti consiglierei di leggere questo tutorial che contiene anche casi d'uso. Poiché redis è piuttosto orientato alla memoria, è davvero buono per i dati in tempo reale aggiornati di frequente, come archivio di sessioni, database di stato, statistiche, memorizzazione nella cache e le sue strutture di dati avanzate offre versatilità a molti altri scenari.

Redis, tuttavia, non è un sostituto di NoSQL per i database relazionali classici poiché non supporta molte funzionalità standard del mondo RDBMS come la query dei dati che potrebbe rallentarli. I sostituti sono piuttosto database di documenti come MongoDB o CouchDB e redis è ottimo per integrare funzionalità specifiche in cui la velocità e il supporto per strutture dati avanzate sono utili.


3
Il tutorial a cui sei collegato è fantastico!
Chris Abrams,

5
Ho fatto una rapida ricerca su Google con l'URL del sito di questo tutorial e mi sono imbattuto in questo successo - slideshare.net/dvirsky/introduction-to-redis-version-2
Paul

66

Penso che nulla spieghi meglio i casi d'uso di Redis di questo articolo: http://antirez.com/post/take-advantage-of-redis-adding-it-to-your-stack.html

Scommetto che avrai un aha! momento . ;)

Una citazione di un lettore precedente:

Ho già letto di Redis e ho sentito come le aziende lo usano, ma non ho mai compreso del tutto lo scopo. Dopo aver letto questo posso effettivamente dire che capisco Redis ora e come sia utile. Incredibile che dopo aver ascoltato così tanto tutto ciò che ci è voluto è stato un articolo relativamente semplice.

Una citazione dall'articolo:

Redis è diverso dalle altre soluzioni di database in molti modi: utilizza la memoria come supporto di archiviazione principale e disco solo per la persistenza, il modello di dati è piuttosto unico, è a thread singolo e così via. Penso che un'altra grande differenza sia che per sfruttare Redis nel tuo ambiente di produzione non è necessario passare a Redis. Puoi semplicemente usarlo per fare cose nuove che prima non erano possibili o per risolvere vecchi problemi.

Casi d'uso toccati dall'articolo:

  • Elenca gli ultimi articoli elencati nella tua home page
  • Classifiche e problemi correlati
  • Ordina per voti utente e tempo
  • L'attrezzo scade sugli articoli
  • Conteggio roba
  • N articoli unici in un determinato periodo di tempo
  • Analisi in tempo reale di ciò che sta accadendo, per statistiche, antispam o altro
  • Pub / Sub
  • code
  • caching

Questo articolo è molto utile, ho quello che volevo sapere
Hos Mercury il

@ Zenw0lf Redis è ancora il migliore per la semplice memorizzazione nella cache? Il tuo post è del 2011, quindi non sono sicuro che ci sia qualcos'altro che dovrei usare.
Moondra,

@Moondra Sì, il progetto è ancora molto vivo ed è il creatore che rilascia frequentemente. È ancora un progetto eccezionale per diversi scenari di utilizzo!
zenw0lf,

@ zenw0lf Un buon articolo ma mi confondo ancora in alcuni casi d'uso. Ad esempio il caso d'uso "ultimo elemento", perché è meglio aggiungere Redis in questo caso? ciò che è nel database viene aggiunto in una tabella specifica solo per avere ID utente, commento (id) e / o timestamp e utilizzarlo direttamente. Non sarà lo stesso?
Tony Lin,

1
@TonyLin È entrambe le cose, è veloce perché è in memoria e perché Redis ha anche un'implementazione abbastanza buona di modelli di dati all'avanguardia per aiutarlo a fare il suo lavoro nel miglior modo possibile.
zenw0lf,

9
  • Mi piacerebbe usare Redis sui progetti in tempo reale. Di recente l'ho fatto per un sistema di tracciamento GPS che era stato precedentemente costruito su mysql come database.

    VANTAGGIO

    1. Ogni volta che il tracker trasmette i dati non ho bisogno di aprire la connessione mysql e archiviarli. Possiamo salvarlo su redis e successivamente migrare su mysql usando qualche altro processo. Ciò eviterà la connessione simultanea dal tracker multiplo a mysql.
    2. Posso pubblicare tutti quei dati gps e altri client (javascript / android) possono iscriversi in tempo reale usando la coda messaggi basata su redis
    3. Posso attivare avvisi in tempo reale

3

Una cosa fuori mano è che Redis non è un database relazionale. Se hai bisogno di un "JOIN" SQL, non vorrai usare Redis, né nessun altro database non relazionale. Redis è però più veloce della maggior parte dei database relazionali. Se eseguirai solo query chiave: coppia di valori, ti consigliamo di utilizzare Redis.


Quindi, ad esempio, sarebbe utile usare redis per informazioni su una sessione utente in modo che sia più rapido accedere a nome, e-mail, ID, ecc.?
Chris Abrams,

Io la penso così. Il gabinetto di Kyoto sarebbe ancora più veloce, credo.
EhevuTov
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.