Udgivelse af Redis 6.0 DBMS

Forberedt DBMS udgivelse REDIS 6.0, der tilhører klassen af ​​NoSQL-systemer. Redis leverer Memcached-lignende funktioner til lagring af nøgle-/værdidata, forbedret af understøttelse af strukturerede dataformater såsom lister, hashes og sæt, og muligheden for at køre server-side Lua handler scripts. Projektkode leveres under BSD-licens. Yderligere moduler, der tilbyder avancerede funktioner til virksomhedsbrugere, såsom RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom siden sidste år leveret under den proprietære RSAL-licens. Udviklingen af ​​åbne versioner af disse moduler under AGPLv3-licensen fortsættes af projektet GodFORM.

I modsætning til Memcached giver Redis vedvarende lagring af data på disk og garanterer databasens sikkerhed i tilfælde af en nødstop. Kildekoden til projektet distribueres under BSD-licensen. Klientbiblioteker er tilgængelige for de fleste populære sprog, herunder Perl, Python, PHP, Java, Ruby og Tcl. Redis understøtter transaktioner, som giver dig mulighed for at udføre en gruppe af kommandoer i ét trin, hvilket sikrer konsistens og konsistens (kommandoer fra andre anmodninger kan ikke forstyrre) i udførelsen af ​​et givet sæt kommandoer, og i tilfælde af problemer, giver dig mulighed for at rulle tilbage ændringer. Alle data er fuldt cachelagret i RAM.

Kommandoer som f.eks. stigning/nedsættelse, standardliste- og sætoperationer (forening, kryds), ​​nøgleomdøbning, flere valg og sorteringsfunktioner er tilvejebragt til datastyring. To lagertilstande understøttes: periodisk synkronisering af data til disk og vedligeholdelse af en ændringslog på disk. I det andet tilfælde er fuldstændig sikkerhed for alle ændringer garanteret. Det er muligt at organisere master-slave-datareplikering til flere servere, udført i en ikke-blokerende tilstand. En "publicer/abonner"-meddelelsestilstand er også tilgængelig, hvor der oprettes en kanal, hvorfra beskeder distribueres til kunder via abonnement.

Nøgle forbedringtilføjet i Redis 6.0:

  • Som standard foreslås den nye RESP3-protokol, men forbindelsesopsætningen begynder i RESP2-tilstand, og klienten skifter kun til den nye protokol, hvis den nye HELLO-kommando bruges, når forbindelsen forhandles. RESP3 giver dig mulighed for direkte at returnere komplekse datatyper uden behov for at konvertere generiske arrays på klientsiden og ved at adskille returtyperne.
  • Understøttelse af adgangskontrolliste (ACL), hvilket giver dig mulighed for nøjagtigt at bestemme, hvilke operationer der kan udføres af klienten, og hvilke der ikke kan. ACL'er gør det også muligt at beskytte mod mulige fejl under udviklingen, for eksempel kan en handler, der kun udfører BRPOPLPUSH-operationen, forbydes at udføre andre operationer, og hvis FLUSHALL-kaldet tilføjet under debugging ved et uheld bliver glemt i produktionskoden, vil dette ikke føre til problemer. Implementering af en ACL medfører ingen ekstra omkostninger og har stort set ingen indflydelse på ydeevnen. Der er også udarbejdet grænseflademoduler til ACL, hvilket gør det muligt at lave dine egne autentificeringsmetoder. For at se alle registrerede ACL-overtrædelser leveres kommandoen "ACL LOG". For at generere uforudsigelige sessionsnøgler er kommandoen "ACL GENPASS" blevet tilføjet ved hjælp af SHA256-baseret HMAC.
  • Support SSL / TLS at kryptere kommunikationskanalen mellem klienten og serveren.
  • Support caching af data på klientsiden. For at afstemme cachen på klientsiden med databasens tilstand, er to tilstande tilgængelige: 1. Husk på serveren de nøgler, som klienten tidligere har anmodet om for at informere den om tabet af relevans af indtastningen i klientcachen. 2. "broadcasting"-mekanismen, hvor klienten abonnerer på bestemte nøglepræfikser, og serveren giver besked, hvis nøglerne, der falder ind under disse præfikser, ændres. Fordelen ved "broadcasting"-tilstanden er, at serveren ikke spilder yderligere hukommelse på at gemme et kort over værdier, der er cache på klientsiden, men ulempen er, at antallet af transmitterede beskeder stiger.
  • Disque-meddelelsesmægleren, som giver dig mulighed for at bruge Redis til at behandle beskedkøer, er blevet fjernet fra den grundlæggende struktur i separat modul.
  • Tilføjet Cluster proxy, en proxy for en klynge af Redis-servere, der gør det muligt for en klient at organisere arbejdet med flere Redis-servere, som om de var en enkelt instans. Proxyen kan dirigere anmodninger til noder med de nødvendige data, multipleksforbindelser, rekonfigurere klyngen, hvis der opdages nodefejl, og udføre anmodninger, der spænder over flere noder.
  • API'et til at skrive moduler er blevet væsentligt forbedret, hvilket i det væsentlige gør Redis til en ramme, der giver dig mulighed for at oprette systemer i form af tilføjelsesmoduler.
  • Der er implementeret en replikeringstilstand, hvor RDB-filer straks slettes, efter at de er blevet brugt.
  • PSYNC2-replikeringsprotokollen er blevet forbedret, hvilket har gjort det muligt at udføre delvis resynkronisering oftere ved at øge chancerne for at identificere offsets, der er fælles for replikaen og masteren.
  • Indlæsning af RDB-filer er blevet fremskyndet. Afhængigt af filindholdet varierer accelerationen fra 20 til 30 %. Udførelsen af ​​INFO-kommandoen er blevet betydeligt fremskyndet, når der er et stort antal tilsluttede klienter.
  • En ny STRALGO-kommando er blevet tilføjet med implementeringen af ​​komplekse strengbehandlingsalgoritmer. I øjeblikket er kun én LCS (længste fælles subsequence) algoritme tilgængelig, hvilket kan være nyttigt, når man sammenligner RNA- og DNA-sekvenser.

Kilde: opennet.ru

Tilføj en kommentar