Utjefte fan Redis 7.0 DBMS

De frijlitting fan 'e Redis 7.0 DBMS, dy't heart ta de klasse fan NoSQL-systemen, is publisearre. Redis biedt funksjes foar it bewarjen fan kaai / wearde gegevens, fersterke troch stipe foar strukturearre gegevens formaten lykas listen, hashes, en sets, likegoed as de mooglikheid om te rinne server-side script handlers yn Lua. De projektkoade wurdt levere ûnder de BSD-lisinsje. Oanfoljende modules dy't avansearre mooglikheden biede foar bedriuwsbrûkers, lykas RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, binne sûnt 2019 levere ûnder in proprietêre RSAL-lisinsje. It GoodFORM-projekt, dat koartlyn stagnearre, besocht de ûntwikkeling fan iepen ferzjes fan dizze modules troch te gean ûnder de AGPLv3-lisinsje.

Oars as opslachsystemen yn it ûnthâld lykas Memcached, soarget Redis dat gegevens oanhâldend op skiif opslein wurde en soarget derfoar dat de databank yntakt bliuwt yn gefal fan in crash. De boarnekoade fan it projekt wurdt ferspraat ûnder de BSD-lisinsje. Klantbiblioteken binne beskikber foar de meast populêre talen, ynklusyf Perl, Python, PHP, Java, Ruby en Tcl. Redis stipet transaksjes, wêrtroch jo in groep kommando's yn ien stap kinne útfiere, en soargje foar konsistinsje en konsistinsje (kommando's fan oare oanfragen kinne net ynterferearje) yn 'e útfiering fan in bepaalde set fan kommando's, en yn gefal fan problemen, wêrtroch jo werom kinne rôlje feroarings. Alle gegevens binne folslein cache yn RAM.

Kommando's lykas increment / decrement, standert list en set operaasjes (union, krusing), kaai werneaming, meardere seleksjes, en sortearjen funksjes wurde levere foar gegevens behear. Twa opslach modus wurde stipe: periodike syngronisaasje fan gegevens oan skiif en ûnderhâld fan in feroaring log op skiif. Yn it twadde gefal wurdt folsleine feiligens fan alle feroaringen garandearre. It is mooglik om replikaasje fan master-slave-data te organisearjen nei ferskate servers, útfierd yn in net-blokkearjende modus. In "publisearje / ynskriuwe" messaging modus is ek beskikber, wêryn in kanaal wurdt oanmakke, berjochten dêr't wurde ferspraat oan kliïnten troch abonnemint.

Wichtige feroarings yn Redis 7.0:

  • Stipe tafoege foar funksjes oan serverside. Oars as earder stipe skripts yn 'e Lua-taal, binne de funksjes net bûn oan' e applikaasje en binne rjochte op it ymplementearjen fan ekstra logika dy't de mooglikheden fan 'e tsjinner útwreidet. Funksjes wurde ferwurke ûnskiedber mei de gegevens en yn relaasje ta de databank, en net ta de applikaasje, ynklusyf wurdt replicated en opslein yn persistente opslach.
  • In twadde edysje fan 'e ACL is foarsteld, wêrtroch jo tagong kinne kontrolearje op gegevens basearre op toetsen en kinne jo ferskate sets regels definiearje foar tagong ta kommando's mei de mooglikheid om ferskate selectors (sets fan tagongsrjochten) oan elke brûker te binen. Elke kaai kin wurde identifisearre mei in spesifike autoriteit, Jo kinne bygelyks tagong beheine ta it lêzen of skriuwen fan in bepaalde subset fan kaaien.
  • In partitionearre (sharded) ymplemintaasje fan it Publisearje-Abonnearje berjochtferdielingsparadigma dat rint yn in kluster wurdt levere, wêrby't in berjocht ferstjoerd wurdt nei in spesifyk knooppunt dêr't in berjochtkanaal oan hechte is, wêrnei't dit berjocht trochferwiisd wurdt nei de oerbleaune knooppunten ynbegrepen yn de skuorre. Klanten kinne berjochten ûntfange troch te abonnearjen op in kanaal, sawol troch te ferbinen mei it haadknooppunt en mei de sekundêre knopen fan 'e seksje. Kontrôle wurdt útfierd mei de kommando's SSUBSCRIBE, SUNSUBSCRIBE en SPUBLISH.
  • Stipe tafoege foar it ferwurkjen fan subkommando's yn 'e measte konteksten.
  • Nije kommando's tafoege:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCTION *, FCALL, FCALL_RO.
    • COMMAND DOCS, COMMAND LIST.
    • LATENCY HISTOGRAM.
    • CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • KLIENT NO-EVICT.
    • ACL DRYRUN.
  • De mooglikheid om meardere konfiguraasjes tagelyk te ferwurkjen yn ien CONFIG SET/GET-oprop is levere.
  • Opsjes "-json", "-2", "-scan", "-functions-rdb" binne tafoege oan it redis-cli-hulpprogramma.
  • Standert is kliïnt tagong ta ynstellings en kommando's dy't ynfloed hawwe op feiligens útskeakele (bygelyks de kommando's DEBUG en MODULE binne útskeakele, feroarjen fan konfiguraasjes mei de flagge PROTECTED_CONFIG is ferbean). Redis-cli jout gjin kommando's mear út dy't gefoelige gegevens befetsje nei in skiednisbestân.
  • In grut part fan optimalisaasjes is yntrodusearre rjochte op it fergrutsjen fan prestaasjes en ferminderjen ûnthâld konsumpsje. Bygelyks, ûnthâld konsumpsje is gâns fermindere by it ynskeakeljen fan kluster modus, by it útfieren fan kopiearje-op-skriuwe operaasjes, en by it wurkjen mei hashes en zset toetsen. Ferbettere logika foar it spoelen fan gegevens nei skiif (fsync-oprop). It oantal netwurkpakketten en systeemoproppen by it ferstjoeren fan antwurden nei de klant is fermindere. Replikaasje-effisjinsje is ferbettere.
  • De kwetsberens CVE-2022-24735 yn 'e omjouwing foar it útfieren fan Lua-skripts is reparearre, wêrtroch jo jo eigen Lua-koade kinne ferfange en syn útfiering berikke yn' e kontekst fan in oare brûker, ynklusyf ien mei hegere privileezjes.
  • Fêste kwetsberens CVE-2022-24736, wêrtroch it redis-tsjinner proses kin crashe fanwegen NULL-oanwizer dereference. De oanfal wurdt útfierd troch it laden fan spesjaal ûntwurpen Lua-skripts.

Boarne: opennet.ru

Add a comment