rilascio del DBMS , appartenente alla categoria dei sistemi NoSQL. Redis offre funzionalità simili a Memcached per la memorizzazione dei dati in formato chiave/valore, estese dal supporto per formati di dati strutturati come liste, hash e set, nonché la possibilità di eseguire script di gestione sul lato server in linguaggio Lua. Il codice del progetto è sotto licenza BSD. Moduli aggiuntivi che offrono funzionalità avanzate per utenti aziendali, come RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, sono dallo scorso anno sotto licenza proprietaria RSAL. Lo sviluppo delle versioni open source di questi moduli sotto licenza AGPLv3 è continuato grazie al progetto .
A differenza di Memcached, Redis offre la persistenza dei dati su disco e garantisce l'integrità del database in caso di arresto anomalo. I testi sorgente del progetto sono distribuiti sotto licenza BSD. Le librerie client sono disponibili per la maggior parte dei linguaggi popolari, tra cui Perl, Python, PHP, Java, Ruby e Tcl. Redis supporta le transazioni, che consentono di eseguire un gruppo di comandi in un singolo passaggio, garantendo coerenza e sequenzialità (i comandi provenienti da altre richieste non possono interferire) nell'esecuzione del set di comandi specificato, e in caso di problemi consente di annullare le modifiche. Tutti i dati vengono memorizzati totalmente in memoria.
Per gestire i dati, sono disponibili comandi come incremento/decremento, operazioni standard su liste e insiemi (unione, intersezione), rinominazione delle chiavi, selezioni multiple e funzioni di ordinamento. Sono supportati due modalità di archiviazione: sincronizzazione periodica dei dati su disco e mantenimento di un registro delle modifiche su disco. Nel secondo caso, viene garantita la completa integrità di tutte le modifiche. È possibile organizzare la replicazione dei dati master-slave su più server, effettuata in modalità non bloccante. È inoltre disponibile una modalità di messaggistica "pubblicazione/sottoscrizione", in cui viene creato un canale da cui i messaggi vengono distribuiti ai clienti in base all'iscrizione.
Chiave , introdotte in Redis 6.0:
- Per impostazione predefinita, è stato proposto un nuovo protocollo RESP3, ma l'instaurazione della connessione inizia in modalità RESP2 e il client passa al nuovo protocollo solo se durante la negoziazione della connessione è stato utilizzato il nuovo comando HELLO. RESP3 consente di restituire direttamente tipologie di dati complesse senza necessità di convertire gli array generali lato client e separando i tipi restituiti.
- Supporto per le liste di controllo degli accessi (), che consentono di determinare con precisione quali operazioni possono essere eseguite dal cliente e quali no. Le ACL offrono anche la possibilità di proteggersi da potenziali errori durante lo sviluppo; ad esempio, a un gestore che esegue esclusivamente l'operazione BRPOPLPUSH si può impedire l'esecuzione di altre operazioni, evitando problemi qualora nel codice di produzione venisse accidentalmente trascurata una chiamata FLUSHALL aggiunta durante il debug. L'implementazione delle ACL non comporta costi aggiuntivi e influisce praticamente nulla sulle prestazioni. Sono stati preparati anche moduli interfaccia per le ACL, consentendo di creare metodi di autenticazione personalizzati. Per visualizzare tutte le violazioni registrate, è disponibile il comando «ACL LOG». Per generare chiavi di sessione imprevedibili, è stato aggiunto il comando «ACL GENPASS», che utilizza HMAC basato su SHA256.
- Supporto per crittografare il canale di comunicazione tra il client e il server.
- caching dei dati sul lato client. Per la sincronizzazione della cache sul lato client con lo stato del database sono disponibili due modalità: 1. Memorizzazione su server delle chiavi precedentemente richieste dal client, per informarlo della perdita di validità di un record nella cache del client. 2. Meccanismo di «broadcasting», in cui il client si iscrive a determinati prefissi di chiavi e il server lo avvisa in caso di modifica delle chiavi che rientrano in tali prefissi. Il vantaggio della modalità «broadcasting» è che il server non utilizza ulteriore memoria per memorizzare la mappa dei valori memorizzati nella cache sul lato client, mentre lo svantaggio è l'aumento del numero di messaggi trasmessi.
- Broker di messaggi Disque, che consente di utilizzare Redis per la gestione delle code di messaggi, è stato estratto dalla configurazione di base in .
- Aggiunto , un proxy per cluster di server Redis, che consente di organizzare il funzionamento del client con più server Redis come se fosse un'unica istanza. Il proxy può reindirizzare le richieste ai nodi con i dati necessari, multiplexare le connessioni, riconfigurare il cluster in caso di guasti dei nodi, eseguire richieste che interessano più nodi.
- L'API per la scrittura di moduli è stato notevolmente migliorato, trasformando essenzialmente Redis in un framework che consente di costruire sistemi sotto forma di moduli estensibili.
- È stata implementata una modalità di replica in cui i file RDB vengono rimossi immediatamente dopo essere stati utilizzati.
- È stato migliorato il protocollo di replica PSYNC2, che ora consente di eseguire più frequentemente la risincronizzazione parziale, aumentando le possibilità di rilevare uno spostamento comune tra la replica e il master.
- Il caricamento dei file RDB è stato accelerato. A seconda della configurazione del file, l'accelerazione varia dal 20 al 30%. L'esecuzione del comando INFO è stata notevolmente velocizzata in presenza di un gran numero di client connessi.
- È stato aggiunto un nuovo comando STRALGO con l'implementazione di algoritmi complessi per l'elaborazione delle stringhe. Attualmente è disponibile solo un algoritmo, LCS (longest common subsequence), che può essere utile per il confronto di sequenze di RNA e DNA.
Fonte: opennet.ru
