Byl zveřejněn release databázového systému Redis 8.2, který patří do kategorie NoSQL systémů. Redis nabízí funkce pro ukládání dat ve formátu klíč/hodnota, rozšířené podporou strukturovaných datových formátů, jako jsou seznamy, hash a množiny, a také možností vykonávat skripty v jazyce Lua na serveru. Kód projektu je napsán v jazyce C a je distribuován pod licencí AGPLv3.
Databázový systém Redis podporuje transakce, které umožňují provést skupinu příkazů najednou, zaručující konzistentnost a pořadí (příkazy z jiných požadavků se nemohou vmísit) provádění daného souboru příkazů, a v případě problémů umožňují vrátit změny zpět. Všechna data se plně ukládají do operační paměti. Klientské knihovny jsou k dispozici pro většinu populárních jazyků, včetně Perlu, Pythonu, PHP, Javy, Ruby a Tcl.
Pro správu dat se poskytují příkazy jako inkrementace/dekrementace, standardní operace nad seznamy a množinami (sjednocení, průnik), přejmenování klíčů, vícenásobné výběry a funkce pro řazení. Podporovány jsou dva režimy ukládání: periodická synchronizace dat na disk a vedení logu změn na disku. V druhém případě je zaručena úplná ochrana všech změn. Je možné organizovat replikaci dat v režimu master-slave na několik servery, prováděnou bez blokování. K dispozici je také režim výměny zpráv „publikace/předplatné“, při kterém se vytváří kanál, ze kterého jsou zprávy šířeny předplatitelům.
Klíčové změny v Redis 8.2:
- Bylo optimalizováno více než 70 příkazů, které nyní fungují rychleji než v Redis 8.0. Například příkaz BITCOUNT se zrychlil o 35 %, a příkazy pro operace se seznamy LINSERT, LREM a LPOS zrychlily o 25 %. U 17 z optimalizovaných příkazů došlo k zrychlení minimálně o 5 %, zatímco 52 přešlo na minimálně 2 %.

- Byly provedeny optimalizace zpracování souběžných operací a vícetherní vstup/výstup, což umožnilo zvýšení počtu zpracovávaných operací za sekundu o 49 % ve zkouškách s 8 vlákny při distribuci zátěže 20 % zápisů a 80 % čtení. Na jednom serveru se podařilo překonat hranici 1 milionu zpracovávaných operací za sekundu.

- Fundamentálně byl změněn způsob ukládání dat ve formátu klíč/hodnota - nyní se používá jednotná struktura kvobj, která umožňuje zabalit název klíče, krátkou hodnotu a dobu životnosti do jednoho bloku vyhrazené paměti a vystačit si s jednou referencí na tuto strukturu v hash tabulkách, místo samostatných referencí na klíče, data a TTL. Při ukládání krátkých řetězcových hodnot nový způsob uložení snížil spotřebu paměti o 25-37 %.

- Byla provedena optimalizace ukládání dat ve formátu JSON, která umožnila snížit spotřebu paměti o 25-67 % při ukládání celých čísel a čísel s plovoucí desetinnou čárkou.
- Do mechanismu Streams, používaného pro zpracování a ukládání proudů zpráv, byly přidány nové příkazy XACKDEL a XDELEX, které zjednodušují práci s proudy připojenými k několika příjemcům (skupiny spotřebitelů). Tyto příkazy řeší úlohu odstranění zprávy až poté, co bylo její přijetí potvrzeno všemi zpracovateli.
- Do příkazu BITOP, určeného pro provádění bitových operací, byly přidány nové logické operátory DIFF, DIFF1, ANDOR a ONE.
- Byl přidán nový typ indexů vektorů SVS-VAMANA, který podporuje kompresi vektorů.
- Byly přidány nové metriky: zatížení podle jednotlivých slotů a rozdělení velikostí klíčů pro základní datové typy.
Zdroj: opennet.ru



