Durante questi ultimi anni, le tecniche e gli strumenti usati per la persistenza e la ricerca dei dati hanno avuto una forte crescita. Anche se, quasi sicuramente, non saranno mai abbandonati i database relazionali, possiamo sicuramente dire che il panorama attorno alle basi di dati è cambiato radicalmente ed è in continua evoluzione.
Tra tutti questi nuovi strumenti spicca Redis, un database non relazione molto interessante sotto molti punti di vista: alte prestazioni, facilità di apprendimento e adattabile alle esigenze del programmatore.

Redis è un database non relazione nato nel 2009 per mano di Salvatore SanFilippo, inizialmente sponsorizzato da vmware ora è supportato da Pivotal.
È un NoSql di tipo Key/Value ma ha due caratteristiche che lo rendono molto diverso dagli altri database della sua stessa categoria: la prima è che lavora completamente in RAM; la seconda è che oltre a fornire il classico salvataggio delle informazioni tramite coppie chiave-valore offre ben altre quattro strutture dati: liste, insiemi, insiemi ordinati e hash.
Redis anche se lavora in ram utilizza la memoria secondaria per offrire persistenza dei dati:

  • La persistenza RDB (Redis DataBase) esegue degli snapshot ad intervalli di tempo specificati.
  • La persistenza AOF (Append Only File) invece registra ogni singola operazione di scrittura ricevuto dal server, e sarà quindi in grado di ricostruire l’insieme di dati originale. I comandi vengono registrati utilizzando lo stesso formato come il protocollo Redis stesso. La gestione e l’ottimizzazione del ??le di log viene fatta completamente in background.
  • Usare la sincronizzazione Master-slave per il salvataggio dei dati.
  • Pieter Noordhuis ha fornito un grande esempio utilizzando EventMachine e Redis per creare una multi chat ad alte prestazioni. (https://gist.github.com/pietern/348262) .

    Abbiamo sviluppo molte applicazioni che utilizzano redis come database e possiamo dire che le prestazioni sono molto performante. Se uniamo:
    Redis + nodejs = Un Web Performante in Real Time