Redis 7.0 DBMS:n julkaisu

NoSQL-järjestelmien luokkaan kuuluvan Redis 7.0 DBMS:n julkaisu on julkaistu. Redis tarjoaa toimintoja avain-/arvotietojen tallentamiseen, jota parannetaan strukturoitujen tietomuotojen, kuten luetteloiden, tiivisteiden ja joukkojen, tuella sekä kyky suorittaa palvelinpuolen komentosarjakäsittelijöitä Luassa. Projektikoodi toimitetaan BSD-lisenssillä. Lisämoduuleja, jotka tarjoavat edistyneitä ominaisuuksia yrityskäyttäjille, kuten RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, on toimitettu omalla RSAL-lisenssillä vuodesta 2019 lähtien. Viime aikoina pysähtynyt GoodFORM-projekti yritti jatkaa näiden moduulien avoimien versioiden kehittämistä AGPLv3-lisenssillä.

Toisin kuin muistissa olevat tallennusjärjestelmät, kuten Memcached, Redis varmistaa, että tiedot tallennetaan jatkuvasti levylle ja varmistaa, että tietokanta pysyy ehjänä kaatumisen sattuessa. Projektin lähdekoodia jaetaan BSD-lisenssillä. Asiakaskirjastot ovat saatavilla suosituimmille kielille, mukaan lukien Perl, Python, PHP, Java, Ruby ja Tcl. Redis tukee tapahtumia, joiden avulla voit suorittaa joukon komentoja yhdessä vaiheessa, mikä varmistaa johdonmukaisuuden ja johdonmukaisuuden (muiden pyyntöjen komennot eivät voi häiritä) tietyn komentosarjan suorittamisessa, ja ongelmatilanteissa mahdollistaa palautumisen muutoksia. Kaikki tiedot ovat täysin välimuistissa RAM-muistissa.

Tietojen hallintaa varten tarjotaan komennot, kuten lisäys/vähennys, vakioluettelo- ja joukkooperaatiot (liitos, leikkaus), avainten uudelleennimeäminen, useat valinnat ja lajittelutoiminnot. Kahta tallennustilaa tuetaan: säännöllinen tietojen synkronointi levylle ja muutoslokin ylläpito levyllä. Toisessa tapauksessa kaikkien muutosten täydellinen turvallisuus taataan. On mahdollista järjestää isäntä-orja-tietojen replikointi useille palvelimille, jotka suoritetaan estotilassa. Saatavilla on myös "julkaisu/tilaa" -viestintätila, jossa luodaan kanava, jonka viestit jaetaan asiakkaille tilaamalla.

Tärkeimmät muutokset Redis 7.0:ssa:

  • Lisätty tuki palvelinpuolen toiminnoille. Toisin kuin aiemmin tuetut skriptit Lua-kielellä, toiminnot eivät ole sidottu sovellukseen, ja niiden tarkoituksena on toteuttaa lisälogiikkaa, joka laajentaa palvelimen ominaisuuksia. Toimintoja käsitellään erottamattomasti tietojen kanssa ja suhteessa tietokantaan, ei sovellukseen, mukaan lukien kopiointi ja säilytys pysyvään tallennustilaan.
  • ACL:n toista versiota on ehdotettu, jonka avulla voit hallita pääsyä tietoihin avaimien perusteella ja antaa sinun määrittää erilaisia ​​sääntöjä komentojen käyttämiselle sekä mahdollisuus sitoa useita valitsimia (käyttöoikeusjoukkoja) jokaiseen käyttäjään. Jokainen avain voidaan tunnistaa tietyllä oikeudella, esimerkiksi voit rajoittaa pääsyn lukemaan tai kirjoittamaan vain tiettyä avainten osajoukkoa.
  • Tarjotaan klusterissa toimiva Publish-Subscribe-sanomien jakeluparadigman osioitu (shared) toteutus, jossa viesti lähetetään tietylle solmulle, johon viestikanava on liitetty, minkä jälkeen tämä viesti ohjataan muihin mukana oleviin solmuihin. sirpaleessa. Asiakkaat voivat vastaanottaa viestejä tilaamalla kanavan sekä muodostamalla yhteyden pääsolmuun että osion toissijaisiin solmuihin. Ohjaus suoritetaan SSUBSCRIBE-, SUNSUBSCRIBE- ja SPUBLISH-komennoilla.
  • Lisätty tuki alikomentojen käsittelyyn useimmissa yhteyksissä.
  • Uusia komentoja lisätty:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • JULKAISEMINEN, TILAA, SUN SUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCTION *, FCALL, FCALL_RO.
    • KOMENTODOKUMENTIT, KOMENTOLISTA.
    • VIIVEHISTOGRAMMI.
    • CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • ASIAKAS EI HÄÄTÖSTÄ.
    • ACL DRYRUN.
  • Mahdollisuus käsitellä useita määrityksiä kerralla yhdessä CONFIG SET/GET -kutsussa on tarjottu.
  • Vaihtoehdot “-json”, “-2”, “-scan”, “-functions-rdb” on lisätty redis-cli-apuohjelmaan.
  • Oletuksena asiakkaan pääsy turvallisuuteen vaikuttaviin asetuksiin ja komentoihin on estetty (esimerkiksi DEBUG- ja MODULE-komennot on poistettu käytöstä, kokoonpanojen muuttaminen PROTECTED_CONFIG-lipulla on kielletty). redis-cli ei enää tulosta arkaluontoisia tietoja sisältäviä komentoja historiatiedostoon.
  • Suuri osa optimoinneista on otettu käyttöön suorituskyvyn lisäämiseksi ja muistin kulutuksen vähentämiseksi. Esimerkiksi muistin kulutus on vähentynyt merkittävästi, kun klusteritila otetaan käyttöön, kopiointi-kirjoitustoimintoja suoritettaessa sekä tiiviste- ja zset-näppäimiä käytettäessä. Parannettu logiikka tietojen huuhtelemiseen levylle (fsync-kutsu). Verkkopakettien ja järjestelmäkutsujen määrää lähetettäessä vastauksia asiakkaalle on vähennetty. Replikoinnin tehokkuus on parantunut.
  • Lua-komentosarjojen suoritusympäristössä oleva haavoittuvuus CVE-2022-24735 on korjattu, minkä ansiosta voit korvata omalla Lua-koodillasi ja suorittaa sen toisen käyttäjän kontekstissa, mukaan lukien käyttäjä, jolla on korkeammat oikeudet.
  • Korjattu haavoittuvuus CVE-2022-24736, joka sallii redis-palvelinprosessin kaatumisen NULL-osoittimen viittauksen vuoksi. Hyökkäys suoritetaan lataamalla erityisesti suunniteltuja Lua-skriptejä.

Lähde: opennet.ru

Lisää kommentti