Vydání Redis 7.0

Byla zveřejněna verze Redis 7.0 DBMS, která patří do třídy systémů NoSQL. Redis poskytuje funkce pro ukládání dat klíč/hodnota, rozšířené o podporu formátů strukturovaných dat, jako jsou seznamy, hash a sady, a také o možnost spouštět obslužné programy skriptů na straně serveru v Lua. Kód projektu je dodáván pod licencí BSD. Další moduly, které nabízejí pokročilé funkce pro podnikové uživatele, jako jsou RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, jsou od roku 2019 dodávány pod proprietární licencí RSAL. Projekt GoodFORM, který v poslední době stagnuje, se snažil pokračovat ve vývoji otevřených verzí těchto modulů pod licencí AGPLv3.

Na rozdíl od in-memory storage systémů, jako je Memcached, Redis zajišťuje, že data jsou trvale uložena na disku a zajišťuje, že databáze zůstane nedotčena v případě havárie. Zdrojový kód projektu je distribuován pod licencí BSD. Klientské knihovny jsou dostupné pro většinu populárních jazyků, včetně Perl, Python, PHP, Java, Ruby a Tcl. Redis podporuje transakce, které umožňují provádět skupinu příkazů v jednom kroku, zajišťující konzistenci a konzistenci (příkazy z jiných požadavků nemohou zasahovat) při provádění dané sady příkazů a v případě problémů umožňují vrátit zpět Změny. Všechna data jsou plně uložena v paměti RAM.

Pro správu dat jsou k dispozici příkazy jako zvýšení/snížení, standardní operace se seznamy a sadami (sjednocení, průnik), přejmenování kláves, vícenásobný výběr a funkce řazení. Jsou podporovány dva režimy úložiště: pravidelná synchronizace dat na disk a údržba protokolu změn na disku. V druhém případě je zaručena úplná bezpečnost všech změn. Je možné organizovat replikaci dat master-slave na několik serverů, prováděnou v neblokovacím režimu. K dispozici je také režim zasílání zpráv „publikovat/předplatit“, ve kterém je vytvořen kanál, z něhož jsou zprávy distribuovány klientům prostřednictvím předplatného.

Klíčové změny v Redis 7.0:

  • Přidána podpora funkcí na straně serveru. Na rozdíl od dříve podporovaných skriptů v jazyce Lua nejsou funkce vázány na aplikaci a jsou zaměřeny na implementaci další logiky, která rozšiřuje možnosti serveru. Funkce jsou zpracovávány neoddělitelně s daty a ve vztahu k databázi, nikoli k aplikaci, včetně replikace a ukládání do trvalého úložiště.
  • Bylo navrženo druhé vydání ACL, které umožňuje řídit přístup k datům na základě klíčů a umožňuje definovat různé sady pravidel pro přístup k příkazům s možností svázat několik selektorů (sady oprávnění) pro každého uživatele. Každý klíč lze identifikovat s určitým oprávněním, například můžete omezit přístup pouze na čtení nebo zápis určité podmnožiny klíčů.
  • Je poskytována dělená (sharded) implementace paradigmatu distribuce zpráv Publish-Subscribe běžícího v clusteru, ve kterém je zpráva odeslána konkrétnímu uzlu, ke kterému je připojen kanál zpráv, načež je tato zpráva přesměrována na zbývající zahrnuté uzly. ve střepu. Klienti mohou přijímat zprávy přihlášením se ke kanálu, a to jak připojením k hlavnímu uzlu, tak k sekundárním uzlům sekce. Ovládání se provádí pomocí příkazů SSUBSCRIBE, SUNSUBSCRIBE a SPUBLISH.
  • Přidána podpora pro zpracování dílčích příkazů ve většině kontextů.
  • Přidány nové příkazy:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • PUBLISH, SSUBSCRIBE, SUNSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • EXPIRETIME, PEXPIRETIME.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCTION *, FCALL, FCALL_RO.
    • DOKUMENTY PŘÍKAZŮ, SEZNAM PŘÍKAZŮ.
    • HISTOGRAM LATENCE.
    • CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • KLIENT BEZ VYHLÁŠENÍ.
    • ACL DRYRUN.
  • Byla poskytnuta možnost zpracovat více konfigurací najednou v jednom volání CONFIG SET/GET.
  • Do obslužného programu redis-cli byly přidány možnosti „-json“, „-2“, „-scan“, „-functions-rdb“.
  • Ve výchozím nastavení je klientský přístup k nastavení a příkazům, které ovlivňují zabezpečení, zakázán (například příkazy DEBUG a MODULE jsou zakázány, změna konfigurací s příznakem PROTECTED_CONFIG je zakázána). Redis-cli již nevydává příkazy obsahující citlivá data do souboru historie.
  • Byla zavedena velká porce optimalizací zaměřených na zvýšení výkonu a snížení spotřeby paměti. Například spotřeba paměti byla výrazně snížena při povolení režimu clusteru, při provádění operací kopírování při zápisu a při práci s klíči hash a zset. Vylepšená logika pro vyprázdnění dat na disk (volání fsync). Snížil se počet síťových paketů a systémových volání při odesílání odpovědí klientovi. Účinnost replikace byla zlepšena.
  • Byla opravena zranitelnost CVE-2022-24735 v prostředí pro spouštění skriptů Lua, což vám umožňuje nahradit vlastní kód Lua a dosáhnout jeho spuštění v kontextu jiného uživatele, včetně uživatele s vyššími oprávněními.
  • Opravena chyba zabezpečení CVE-2022-24736, která umožňuje zhroucení procesu redis-server kvůli dereferenci NULL ukazatele. Útok se provádí načítáním speciálně navržených skriptů Lua.

Zdroj: opennet.ru

Přidat komentář