I database re­la­zio­na­li sono uti­liz­za­ti nella maggior parte dei progetti in­for­ma­ti­ci. Che si tratti di web design o di sviluppo software, i database basati su tabelle for­ni­sco­no risultati buoni e stabili nella maggior parte degli scenari. Ma sono sempre la scelta migliore? Negli ultimi anni sono state in­tro­dot­te sul mercato diverse tipologie di database, ciascuna con i propri vantaggi. I co­sid­det­ti databse NoSQL sono altamente rac­co­man­da­ti per alcuni tipi di progetti. Redis è uno di questi. Come funziona questa modalità di ar­chi­via­zio­ne dei dati e quali sono i vantaggi?

Spie­ga­zio­ne del database Redis

Il nome Redis sta per Remote Dic­tio­na­ry Server. Questo tipo di server è adatto per la me­mo­riz­za­zio­ne veloce dei dati. In qualità di sistema di gestione di database (DBMS), Redis offre sia un database in memoria centrale (in-memory database), sia un database chiave-valore (key-value store.)

  • In-memory database: in queste banche dati, il DBMS memorizza tutti i dati di­ret­ta­men­te in memoria. Ciò ga­ran­ti­sce tempi di accesso molto brevi, anche con grandi volumi di dati non strut­tu­ra­ti.
  • Key-value store: i database chiave-valore con­vin­co­no per le loro elevate pre­sta­zio­ni e possono essere fa­cil­men­te scalati grazie alla loro semplice struttura. Per ogni voce viene creata una chiave che può essere uti­liz­za­ta per il recupero delle in­for­ma­zio­ni.

Nel caso di un server Redis, i dati non sono quindi me­mo­riz­za­ti sul disco rigido, ma nella memoria prin­ci­pa­le. In questo modo Redis è sia cache, sia memoria: che le in­for­ma­zio­ni siano me­mo­riz­za­te in modo per­ma­nen­te nel database o solo per un breve periodo di tempo, non fa alcuna dif­fe­ren­za.

Ogni voce nel database riceve una chiave. Grazie a tali chiavi, i dati possono essere fa­cil­men­te re­cu­pe­ra­ti. Le voci non sono collegate tra loro e quindi non devono essere richieste passando at­tra­ver­so diverse tabelle. Le in­for­ma­zio­ni sono di­spo­ni­bi­li di­ret­ta­men­te.

La me­mo­riz­za­zio­ne nella memoria prin­ci­pa­le implica tuttavia il rischio di perdere tutti i dati in caso di crash del server. Per evitare questo, Redis duplica re­go­lar­men­te tutti i dati sul disco rigido di backup o salva tutti i comandi necessari per il ri­pri­sti­no in un file di log.

La struttura tipica dei dati di Redis è co­sti­tui­ta da semplici stringhe di caratteri. Anche le chiavi (una delle parti del key-value store) sono im­ple­men­ta­te come stringhe. Tuttavia, il sistema può gestire anche altre tipologie di strutture dati:

  • Strings: stringa di caratteri con di­men­sio­ne massima di 512 MB
  • Hashes: entrata con diversi campi e valori
  • Lists: stringhe ordinate in base all’ordine di aggiunta
  • Sets: stringhe prive di ordine
  • Sorted sets: stringhe ordinate in base a un de­ter­mi­na­to valore
  • Bitmaps: ope­ra­zio­ni a livello di bit
  • Hy­per­Lo­gLogs: stima basata su valori univoci in un dataset
  • Streams: stringhe o coppie chiave-valore complesse

Poiché Redis è open source, molti svi­lup­pa­to­ri lavorano su possibili esten­sio­ni del DBMS. Questi moduli ampliano la fun­zio­na­li­tà del database, di per sé molto semplice, e adattano il software ad ap­pli­ca­zio­ni spe­ci­fi­che.

Fatto

Redis è open source e può essere usato da tutti gra­tui­ta­men­te. Lo sponsor prin­ci­pa­le di Redis è la società Redis Labs. Questa azienda offre versioni cloud del software a pagamento.

A quali ambiti di ap­pli­ca­zio­ne si addice mag­gior­men­te Redis?

Redis è ti­pi­ca­men­te usato come cache. Twitter, ad esempio, utilizza questo tipo di database: la timeline del servizio di mes­sag­gi­sti­ca è rea­liz­za­ta da una cache Redis. Essa consiste in una lista che può essere ra­pi­da­men­te re­cu­pe­ra­ta e ampliata in modo in­cre­men­ta­le.

Redis viene uti­liz­za­to anche per altri scopi: grazie all’elevata velocità di accesso, un database Redis è per­fet­ta­men­te adatto, ad esempio, ai servizi di mes­sag­gi­sti­ca o alle chat room. Le nuove re­gi­stra­zio­ni possono essere vi­sua­liz­za­te in tempo reale. Anche gli elenchi che devono essere mo­di­fi­ca­ti con breve preavviso vengono im­ple­men­ta­ti con Redis.

Consiglio

Redis vi ha convinti e volete usarlo per il vostro progetto? Nel nostro semplice Tutorial su Redis potrete scoprire come funziona.

Vantaggi e svantaggi di Redis

Redis è sempre una buona scelta quando semplici dati devono essere di­spo­ni­bi­li ra­pi­da­men­te. La du­pli­ca­zio­ne costante dei dati aumenta ad­di­rit­tu­ra la velocità di lettura: i dati possono essere re­cu­pe­ra­ti da diverse istanze. Anche la scalatura è molto efficace, sia oriz­zon­tal­men­te, sia ver­ti­cal­men­te. Se la memoria del server Redis non è suf­fi­cien­te, il software ha una gestione della memoria virtuale integrata che memorizza i dati sul disco rigido. Redis è scritto in C, ma esistono client per quasi tutti i linguaggi di pro­gram­ma­zio­ne.

Tuttavia, se si lavora con dati complessi che ri­chie­do­no query al­tret­tan­to con­si­sten­ti, Redis non è la scelta più indicata. I dati all’interno di un key-value store sono ac­ces­si­bi­li solo tramite chiavi. Inoltre, così come altri in-memory database, Redis richiede una quantità di memoria estre­ma­men­te grande, che può essere costosa. Bisogna anche con­si­de­ra­re di mettere a di­spo­si­zio­ne più memoria di quella che i dati occupano ef­fet­ti­va­men­te.

Fatto

Quando è ne­ces­sa­rio scrivere e re­cu­pe­ra­re dati ra­pi­da­men­te, Redis offre una buona al­ter­na­ti­va ai classici database re­la­zio­na­li. Tuttavia, se non avete bisogno di velocità e cercate un database per compiti più complessi, è meglio ricorrere al metodo tra­di­zio­na­le.

Vai al menu prin­ci­pa­le