Paglabas ng Redis 7.0 DBMS

Ang paglabas ng Redis 7.0 DBMS, na kabilang sa klase ng mga sistema ng NoSQL, ay nai-publish. Nagbibigay ang Redis ng mga function para sa pag-iimbak ng data ng susi/halaga, pinahusay ng suporta para sa mga structured na format ng data gaya ng mga listahan, hash, at set, pati na rin ang kakayahang magpatakbo ng mga tagapangasiwa ng script sa gilid ng server sa Lua. Ang code ng proyekto ay ibinibigay sa ilalim ng lisensya ng BSD. Ang mga karagdagang module na nag-aalok ng mga advanced na kakayahan para sa mga corporate na user, gaya ng RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, ay naibigay sa ilalim ng pagmamay-ari na lisensya ng RSAL mula noong 2019. Ang proyektong GoodFORM, na kamakailan lamang ay hindi gumagalaw, ay sinubukang ipagpatuloy ang pagbuo ng mga bukas na bersyon ng mga module na ito sa ilalim ng lisensya ng AGPLv3.

Hindi tulad ng mga in-memory storage system tulad ng Memcached, tinitiyak ng Redis na ang data ay patuloy na naka-imbak sa disk at tinitiyak na ang database ay nananatiling buo sa kaganapan ng isang pag-crash. Ang source code ng proyekto ay ipinamahagi sa ilalim ng lisensya ng BSD. Available ang mga library ng kliyente para sa pinakasikat na mga wika, kabilang ang Perl, Python, PHP, Java, Ruby, at Tcl. Sinusuportahan ng Redis ang mga transaksyon, na nagpapahintulot sa iyo na magsagawa ng isang pangkat ng mga utos sa isang hakbang, na tinitiyak ang pagkakapare-pareho at pagkakapare-pareho (ang mga utos mula sa iba pang mga kahilingan ay hindi maaaring makagambala) sa pagpapatupad ng isang naibigay na hanay ng mga utos, at sa kaso ng mga problema, na nagpapahintulot sa iyo na bumalik mga pagbabago. Ang lahat ng data ay ganap na naka-cache sa RAM.

Ang mga utos tulad ng pagtaas/pagbawas, karaniwang listahan at mga pagpapatakbo ng hanay (unyon, intersection), pagpapalit ng pangalan ng key, maraming mga pagpipilian, at pag-uuri ng mga function ay ibinibigay para sa pamamahala ng data. Dalawang storage mode ang sinusuportahan: panaka-nakang pag-synchronize ng data sa disk at pagpapanatili ng change log sa disk. Sa pangalawang kaso, ang kumpletong kaligtasan ng lahat ng mga pagbabago ay ginagarantiyahan. Posibleng ayusin ang pagtitiklop ng data ng master-slave sa ilang mga server, na isinasagawa sa isang non-blocking mode. Available din ang mode ng pagmemensahe na "mag-publish/mag-subscribe", kung saan nilikha ang isang channel, mga mensahe kung saan ipinamamahagi sa mga kliyente sa pamamagitan ng subscription.

Mga pangunahing pagbabago sa Redis 7.0:

  • Nagdagdag ng suporta para sa mga function sa gilid ng server. Hindi tulad ng mga dati nang sinusuportahang script sa wikang Lua, ang mga function ay hindi nakatali sa application at naglalayong magpatupad ng karagdagang lohika na nagpapalawak ng mga kakayahan ng server. Ang mga pag-andar ay pinoproseso nang walang hiwalay sa data at may kaugnayan sa database, at hindi sa application, kabilang ang pagkopya at pag-imbak sa patuloy na imbakan.
  • Ang pangalawang edisyon ng ACL ay iminungkahi, na nagbibigay-daan sa iyong kontrolin ang pag-access sa data batay sa mga susi at nagbibigay-daan sa iyong tukuyin ang iba't ibang hanay ng mga panuntunan para sa pag-access ng mga utos na may kakayahang magbigkis ng ilang mga tagapili (mga hanay ng mga pahintulot) sa bawat user. Ang bawat susi ay maaaring matukoy gamit ang isang partikular na awtoridad, halimbawa, maaari mong limitahan ang pag-access sa pagbabasa o pagsulat lamang ng isang partikular na subset ng mga susi.
  • Ang isang partitioned (sharded) na pagpapatupad ng paradigm ng pamamahagi ng mensahe ng Publish-Subscribe na tumatakbo sa isang cluster ay ibinigay, kung saan ang isang mensahe ay ipinadala sa isang partikular na node kung saan ang isang channel ng mensahe ay naka-attach, pagkatapos ay ang mensaheng ito ay na-redirect sa natitirang mga node na kasama sa tipak. Ang mga kliyente ay maaaring makatanggap ng mga mensahe sa pamamagitan ng pag-subscribe sa isang channel, kapwa sa pamamagitan ng pagkonekta sa pangunahing node at sa pangalawang node ng seksyon. Ang kontrol ay ginagawa gamit ang SSUBSCRIBE, SUNSUBSCRIBE at SPULISH na mga utos.
  • Nagdagdag ng suporta para sa pagproseso ng mga subcommand sa karamihan ng mga konteksto.
  • Idinagdag ang mga bagong utos:
    • 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.
    • CLIENT NO-EVICT.
    • ACL DRYRUN.
  • Ang kakayahang magproseso ng maraming configuration nang sabay-sabay sa isang CONFIG SET/GET na tawag ay ibinigay.
  • Ang mga opsyon na “-json”, “-2”, “-scan”, “-functions-rdb” ay naidagdag sa redis-cli utility.
  • Bilang default, hindi pinagana ang access ng kliyente sa mga setting at command na nakakaapekto sa seguridad (halimbawa, ang mga command na DEBUG at MODULE ay hindi pinagana, ipinagbabawal ang pagbabago ng mga configuration na may flag na proteksyon_CONFIG). Hindi na naglalabas ang Redis-cli ng mga command na naglalaman ng sensitibong data sa isang history file.
  • Ang isang malaking bahagi ng mga pag-optimize ay ipinakilala na naglalayong pataasin ang pagganap at bawasan ang pagkonsumo ng memorya. Halimbawa, ang pagkonsumo ng memory ay makabuluhang nabawasan kapag pinapagana ang cluster mode, kapag nagsasagawa ng mga operasyong copy-on-write, at kapag nagtatrabaho sa mga hash at zset key. Pinahusay na lohika para sa pag-flush ng data sa disk (fsync call). Ang bilang ng mga network packet at system call kapag nagpapadala ng mga tugon sa kliyente ay nabawasan. Ang kahusayan sa pagtitiklop ay napabuti.
  • Ang kahinaan ng CVE-2022-24735 sa kapaligiran para sa pagpapatupad ng mga script ng Lua ay naayos na, na nagbibigay-daan sa iyong palitan ang sarili mong code ng Lua at makamit ang pagpapatupad nito sa konteksto ng isa pang user, kabilang ang isa na may mas mataas na mga pribilehiyo.
  • Inayos ang kahinaan CVE-2022-24736, na nagpapahintulot sa proseso ng redis-server na mag-crash dahil sa NULL pointer dereference. Ang pag-atake ay isinasagawa sa pamamagitan ng pag-load ng mga espesyal na idinisenyong Lua script.

Pinagmulan: opennet.ru

Magdagdag ng komento