Iznācis Redis 8.4 datubāzes atbrīvojums, kas pieder pie NoSQL sistēmu klases. Redis piedāvā funkcijas datu glabāšanai atslēga/vērtība formātā, paplašinot atbalstu strukturētu datu formātiem, piemēram, sarakstiem, hašiem un kopām, kā arī nodrošinot iespēju izpildīt servera puses apstrādes skriptus Lua valodā. Projekta kods ir uzrakstīts C valodā un tiek izplatīts saskaņā ar AGPLv3 licenci.
Redis datubāze atbalsta darījumu veikšanu, kas ļauj vienā solī izpildīt komandu grupu, garantējot konsistenci un secību (citu pieprasījumu komandas nevar iejaukties) noteiktā komandu kopā, un, ja rodas problēmas, ļaujot atgriezt izmaiņas. Visi dati pilnībā tiek kešoti operatīvajā atmiņā. Klientu bibliotēkas ir pieejamas lielākajai daļai populāro valodu, tostarp Perl, Python, PHP, Java, Ruby un Tcl.
Datu pārvaldībai tiek piedāvāti tādi komandu rīki kā inkrementēšana/dekrementēšana, standarta operācijas ar sarakstiem un kopām (apvienošana, krustojums), atslēgu pārdēvēšana, vairāku izvēles un šķirošanas funkcijas. Atbalsta divus glabāšanas režīmus: periodisku datu sinhronizāciju uz diska un izmaiņu žurnāla uzturēšanu diskā. Otrajā gadījumā tiek garantēta visu izmaiņu pilnīga saglabāšana. Iespējama galvenās-un-vergu datu replikācija uz vairākām serveriem, kas tiek veikta bezbloķējošā režīmā. Pieejams arī ziņojumu apmaiņas režīms "publicēšana/pierakstīšanās", kur izveido kanālu, no kura ziņojumi tiek izplatīti abonentiem.
Galvenās izmaiņas Redis 8.4:
- Pievienota komanda «FT.HYBRID» ar hibrīda meklēšanas īstenojumu, kas apvieno pilnteksta un vektoru meklēšanas iespējas vienā pieprasījumā, ņemot vērā gan tiešās atbilstības, gan semantisko tuvumu. Atbalsta rezultātu agregēšanas iespējas ar sintaksi tāpat kā komandā «FT.AGGREGATE».
- Palielināta caurlaidība tipiskajos Redis pielietojumos kešatmiņai. Piemēram, slodzēs, kas ietver 10% rakstīšanas operāciju (SET) un 90% lasīšanas operāciju (GET) un saglabājot virknes vērtības ar izmēru 1 KB, caurlaidība palielinājusies par 30%.

- Uzlabota meklēšanas operāciju (FT.SEARCH) un rezultātu agregēšanas (FT.AGGREGATE) veiktspēja. Noslogotās sistēmās ar lielu paralēlo pieprasījumu skaitu novērota caurlaidības pieaugums un aiztures samazinājums līdz 4,7 reizēm meklēšanas laikā un līdz 1,4 reizēm rezultātu agregēšanas laikā.

- Optimizēta atmiņas piešķiršana pieprasījumu izpildes laikā un nodrošināta iespēja konfigurēt uzvedību pie pieejamās atmiņas izsīkšanas (OOM, out-of-memory).
- Samazināta atmiņas patēriņš, glabājot mazus virkne elementus (līdz 7 baiti) JSON tipa struktūrās. Piemēram, JSON masīvs, kas ietver 500 mazu atslēga/vērtība elementu, tagad aizņem par 37% mazāk atmiņas.
- Palielināta numuru masīvu glabāšanas efektivitāte JSON formātā, kur visi elementi ir vienā tipā (ja iepriekš katram elementam šāda veida masīvā tika saglabāts tips un vērtība, tad tagad tips tiek saglabāts vienreiz visam masīvam). Veiktajā testā šādi masīvi ar miljonu homogēnu elementu tagad prasa par 50-92% mazāk atmiņas, atkarībā no tipa.
- Komandai SET pievienotas opcijas IFEQ, IFNE, IFDEQ un IFDNE, kas ļauj apieties ar vienu komandu, lai atjauninātu virknes atslēgu situācijās, kad ar to saistītā vērtība nav mainīta citiem klientiem kopš tās izsniegšanas.
- Pievienota komanda XDELEX, lai atomāri dzēstu virknes atslēgu, ja saistītā vērtība nav mainījusies kopš izvilkšanas.
- Pievienota komanda DIGEST, kas atgriež hesu no vērtības, kas saistīta ar norādīto atslēgu.
- Komandai XREADGROUP pievienota opcija „CLAIM ” priekš gaidošiem (idle pending) un ienākošiem (incoming) ziņojumiem.
- Pievienota komanda MSETEX, lai atomāri iestatītu vai atjauninātu vienlaicīgi vairākas virknes atslēgas, kā arī atjauninātu to dzīves laiku.
- Pievienots atomāras slotu migrācijas mehānisms starp klastera mezgliem (ASM — Atomāra Slotu Migrācija), kas atgādina pilnīgu sinhronu replikāciju, bet darbojas atsevišķu datu glabāšanas slotu līmenī. Pievienota komanda CLUSTER MIGRATION, kas ļauj importēt slotus no citiem mezgliem, sekot migarācijas progresam un, ja nepieciešams, atzīmēt gaidošas migrācijas operācijas.
- Pievienota komanda CLUSTER SLOT-STATS, lai novērtētu statistiku klasterī pa atsevišķiem slotiem, piemēram, atslēgu skaitu, CPU slodzi un tīkla ievadi/izvadi.
Avots: opennet.lv


