utgjeving av DBMS , som tilhører klassen NoSQL-systemer. Redis tilbyr funksjoner som ligner på Memcached for lagring av data i nøkkel/verdi-format, utvidet med støtte for strukturerte dataformater som lister, hasj og mengder, samt muligheten for å utføre server-side skripting med Lua. Koden til prosjektet lisensiert under BSD. Ekstra moduler som tilbyr utvidet funksjonalitet for bedriftsbrukere, som RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, leveres siden fjoråret under den proprietære RSAL-lisensen. Utviklingen av åpne varianter av disse modulene under AGPLv3-lisensen fortsetter av prosjektet .
I motsetning til Memcached sørger Redis for vedvarende lagring av data på disk og garanterer integriteten til databasen ved krasj. Prosjektets kilder distribueres under BSD-lisensen. Klientbiblioteker er tilgjengelige for de fleste populære språk inkludert Perl, Python, PHP, Java, Ruby og Tcl. Redis støtter transaksjoner som tillater å utføre en gruppe kommandoer i ett trinn, som garanterer konsistens og sekvens (kommanderende fra andre forespørsel kan ikke blande seg inn) i utførelsen av et gitt sett med kommandoer, og i tilfelle problemer tillater det å rulle tilbake endringer. Alle data caches i sin helhet i RAM.
For datastyring tilbys kommandoer som inkrement / dekrement, standardoperasjoner for lister og mengder (union, snitt), omdøpe nøkler, flere valg og sorteringsfunksjoner. To lagringsmoduser støttes: periodisk datasykronisering til disk og opprettholdelse av endringslogger på disk. I det andre tilfellet garanteres full integritet av alle endringer. Master-slave datagjengivelse på flere servere kan organiseres, utført i en ikke-blokkerende modus. Meldingsutvekslingsmodus «publisering/abonnement» er også tilgjengelig, der det opprettes en kanal som sender meldinger til abonnenter.
Nøkkelfunksjoner , lagt til i Redis 6.0:
- Som standard er den nye protokollen RESP3 foreslått, men tilkoblingen starter i RESP2-modus, og klienten bytter til den nye protokollen bare hvis den nye HELLO-kommandoen ble brukt under tilkoblingsforhandlingene. RESP3 tillater direkte retur av komplekse datatyper uten behov for konvertering av generelle matriser på klientsiden, og separerer de returnerte datatypeene.
- Støtte for tilgangskontrollister (), som gjør det mulig å nøyaktig spesifisere hvilke operasjoner som kan utføres av klienten, og hvilke som ikke kan. ACL gir også mulighet til å beskytte seg mot mulige feil under utviklingen; for eksempel kan en behandler som bare utfører BRPOPLPUSH-operasjonen nektes å utføre andre operasjoner. Hvis en utløst FLUSHALL-løsning ved feilsøking tilfeldig blir glemt i den kjørbare koden, vil dette ikke føre til problemer. Implementeringen av ACL medfører ingen ekstra overhead og påvirker nesten ikke ytelsen. For ACL er det også utviklet grensesnittutvidelser, som gir mulighet for å lage egne autentiseringsmetoder. For visning av alle registrerte ACL-brudd finnes det en kommando kalt «ACL LOG». For å generere uforutsigbare sesjonsnøkler er kommandoen «ACL GENPASS» lagt til, som bruker HMAC basert på SHA256.
- Støtte for kryptering av kommunikasjonskanalen mellom klienten og serveren.
- caching av data på klientsiden. For å synkronisere cachen på klientsiden med DB-tilstanden, finnes det to moduser: 1. Minne på serveren av nøklene som tidligere ble forespurt av klienten, for å informere den om tap av aktuell registrering i klientens cache. 2. En «broadcasting»-mekanisme der klienten abonnerer på bestemte nøkkelprefikser, og serveren varsler den hvis det skjer endringer i nøklene som faller under disse prefiksene. Fordelen med «broadcasting»-modusen er at serveren ikke bruker ekstra minne til å lagre kartet over verdiene som er cachet på klientsiden, men ulempen er den økte mengden overførte meldinger.
- Meldingsmegleren Disque, som gjør det mulig å bruke Redis for håndtering av meldingskøer, er blitt flyttet fra basismassen til .
- Inkludert , en proxy for Redis-serverkluster som gjør det mulig for klienten å samhandle med flere Redis-servere som om det var én instans. Proxien kan rute forespørslene til nodene med nødvendige data, multiplexe forbindelser, rekonfigurere klusteret ved oppdagelse av nodedefekter, og utføre forespørsel som dekker flere noder.
- API for modulskriving er betydelig forbedret, noe som i praksis har gjort Redis til et rammeverk som lar utviklere lage systemer i form av modulære tillegg.
- Replikasjonsmodus er implementert, hvor RDB-filer umiddelbart slettes etter bruk.
- Protokollen for replikasjon PSYNC2 er forbedret, hvilket har muliggjort hyppigere delvis resynkronisering ved at sjansen for å oppdage skjevheter, som er felles for replik og master, har økt.
- Innlasting av RDB-filer er akselerert. Avhengig av filens innhold er forbedringen mellom 20 og 30%. Utførelsen av INFO-kommandoen er betydelig akselerert med et stort antall tilkoblede klienter.
- Den nye kommandoen STRALGO er lagt til med implementering av komplekse algoritmer for strengebehandling. For øyeblikket er kun én algoritme tilgjengelig, LCS (longest common subsequence), som kan være nyttig ved sammenligning av RNA- og DNA-sekvenser.
Kilde: opennet.ru
