Megjelent a Redis 8.10, akár feleannyi memóriával a kompakt hash-ekhez

Elérhető a Redis 8.10 nyílt forráskódú kiadása, amely a Redis szerint hatékonyabb memóriahasználatot, nagyobb teljesítményt és új adatkezelési lehetőségeket kínál. A frissítés többek között kompakt hash-eket, bővített JSONPath lekérdezéseket, inkrementális mentést és új Time Series parancsokat vezet be.
- A Redis szerint a kompakt hash-ek akár 50 százalékkal kevesebb memóriát használhatnak.
- A HIMPORT akár kétszeres hash-betöltési áteresztőképességet kínálhat.
- A RedisJSON új JSONPath műveletekkel és aggregációkkal bővül.
- A Streams válaszai a MAXCOUNT és MAXSIZE opciókkal korlátozhatók.
- Új parancsok érkeznek a Setekhez, Listekhez és RedisTimeSeries-hoz.
Kisebb memóriaigény és gyorsabb hash-betöltés
A Redis 8.10 egyik fő újdonsága a hash sablonokra épülő belső kódolás. Sok alkalmazás nagy számú, azonos mezőket tartalmazó hash-t hoz létre, például felhasználói profilokat a név, az e-mail-cím, az ország és az utolsó bejelentkezés mezőivel. Az új megoldás lehetővé teszi, hogy ezek a hash-ek közös mezőnév-készletet használjanak, miközben az értékeik külön maradnak.
A Redis szerint az ilyen, stabil szerkezetű adatoknál a memóriaigény akár 50 százalékkal is csökkenthető. A kiadás a HIMPORT paranccsal is bővül, amelynél az ügyfél egyszer készíti elő a mezőkészletet, ezt követően pedig csak az értékeket kell elküldenie. A mezőnevek ismételt továbbítása és feldolgozása így elmarad, a hash-ek betöltési sebessége pedig a Redis szerint akár kétszeresére nőhet. A meglévő hash-parancsok változatlan szemantikával működnek tovább, az üzemeltetők pedig az alkalmazások módosítása nélkül is bekapcsolhatják az automatikus sablonátalakítást a megfelelő hash-eknél.
A teljesítményadatok szerint a széles, új hash-eknél a HSET és HMSET műveletek áteresztőképessége akár 104 százalékkal nőhet. A közös mezőnév-sémát használó hash-eknél a memóriahasználat legfeljebb 50 százalékkal mérséklődhet. Az XREADGROUP művelet a Redis adatai alapján 28 százalékkal nagyobb áteresztőképességet érhet el 100-as COUNT értéknél, a mély Streams struktúrák memóriaigénye pedig akár 26 százalékkal csökkenhet.
Bővebb JSONPath és jobban szabályozható Streams
A RedisJSON új kiadása jelentősen kibővíti a JSONPath szintaxisát. Az alkalmazások aritmetikai és összehasonlító műveleteket, szűrést és annak negálását, valamint szövegeken, tömbökön, objektumokon és csomópontlistákon végzett műveleteket használhatnak. Az új szövegfüggvények között szerepel a match(), a search() és a concat(), a tömbökhöz pedig többek között a first(), a last(), az append() és az index() érhető el.
A Redis 8.10 aggregációs lehetőségeket is hozzáad, köztük a min(), a max(), az avg(), a sum() és a stddev() függvényt. Emellett használható a length(), a count(), a keys() és a value(). A Redis szerint ez lehetővé teszi, hogy több szűrési és utófeldolgozási feladat közvetlenül az adatbázisban fusson, csökkentve az adatátvitelt és az alkalmazáskód összetettségét.
A Streams esetében az XREAD és az XREADGROUP mostantól a teljes válasz méretét is korlátozhatja. A MAXCOUNT az összes Streamből visszaadott üzenetek számát, a MAXSIZE pedig a válasz bájtokban mért méretét szabályozza. Így több Stream olvasásakor is korlátozható a hálózati forgalom és a memóriahasználat, valamint elkerülhetők a váratlanul nagy válaszok.
Új műveletek Setekhez, Listekhez és idősorokhoz
A Setekhez hozzáadott SUNIONCARD és SDIFFCARD a halmazunió, illetve a különbség elemszámát adja vissza anélkül, hogy az elemeket át kellene küldeni az ügyfélnek, vagy ideiglenes Setet kellene létrehozni. A SUNIONCARD az APPROX opcióval HyperLogLog alapú becslést is készíthet, amelynek a Redis szerint 0,81 százalék a standard hibája.
A Listekhez érkező új parancsok több elemet mozgatnak atomikusan egyik Listből a másikba. A COUNT legfeljebb a kért számú elemet mozgatja, az EXACTLY pedig csak akkor hajtja végre a kötegelt műveletet, ha a teljes kért mennyiség elérhető. Az elemek sorrendje OBO, vagyis egyenkénti, illetve BULK módban kezelhető, amely megőrzi az áthelyezett elemek egymáshoz viszonyított sorrendjét. A Redis ezt többek között feladatok kötegekben történő átvételéhez, várólistákhoz és újrapróbálási sorokhoz szánja.
A RedisTimeSeries két új lekérdezéssel, a TS.NRANGE és a TS.NREVRANGE paranccsal bővül. Ezek explicit módon megadott idősorok eredményeit időbélyeg szerint csoportosítják, ami megkönnyíti például a pénzügyi adatok, elemzési folyamatok, megfigyelési irányítópultok és gépi tanulási jellemzők feldolgozását. A TS.READ opcionálisan blokkoló olvasást tesz lehetővé, így az alkalmazás megvárhatja az új minták érkezését. Az EXCLUDEEMPTY jelzővel a TS.MRANGE és a TS.MREVRANGE elhagyja azokat az idősorokat, amelyek a kért időtartományban nem tartalmaznak mintát.
Üzemeltetési változások a nagy telepítéseknél
A Redis 8.10 inkrementális mentési és visszaállítási lehetőséget is bevezet. A Redis közlése szerint ez nagy Redis Cluster telepítéseknél összehangolt fürtmentések készítését teszi lehetővé a futó munkaterhelés kisebb hatása mellett. A kiadás célja ezzel az üzemeltetési feladatok egyszerűsítése és a nagy méretű telepítések megbízhatóságának javítása.
A frissítés a Redis szerint azoknak az alkalmazásoknak lehet különösen hasznos, amelyek sok, azonos felépítésű hash-t kezelnek, gyakran dolgoznak több Streammel, vagy időbélyeg szerint összehangolt idősorokat fogyasztanak. A fejlesztők több műveletet közvetlenül a Redisben végezhetnek el, az üzemeltetők pedig a memóriahasználat és a válaszok méretének szabályozásával hatékonyabban kezelhetik a termelési környezeteket.


