De release van de NoSQL-database Redis 8.4 is gepubliceerd. Redis biedt functies voor het opslaan van gegevens in het sleutel/waarde-formaat, uitgebreid met ondersteuning voor gestructureerde gegevensformaten zoals lijsten, hashes en verzamelingen, evenals de mogelijkheid om server-side scripts in Lua uit te voeren. De projectcode is geschreven in C en wordt verspreid onder de AGPLv3-licentie.
De Redis-database ondersteunt transacties, waarmee een groep commando's in ƩƩn stap kan worden uitgevoerd, waardoor de consistentie en volgorde gegarandeerd zijn (commando's van andere verzoeken kunnen zich niet tussen de uitvoering van de gegeven set commando's invoegen) en in geval van problemen kunnen worden teruggedraaid. Alle gegevens worden volledig in het RAM-geheugen gecached. Clientbibliotheken zijn beschikbaar voor de meeste populaire talen, waaronder Perl, Python, PHP, Java, Ruby en Tcl.
Voor het beheer van gegevens zijn er commando's zoals incrementeer/decrementeer, standaardoperaties op lijsten en verzamelingen (samenvoegen, kruising), sleutelherbenaming, meerdere selecties en sorteervarianten. Er worden twee opslagmodi ondersteund: periodieke synchronisatie van gegevens naar de schijf en het bijhouden van een logboek van wijzigingen op de schijf. In het tweede geval wordt volledige integriteit van alle wijzigingen gegarandeerd. Het is mogelijk om master-slave replicatie van gegevens te organiseren over meerdere servers, uitgevoerd in een niet-blokkerende modus. Ook is er een berichtuitwisseling modus beschikbaar met "publiceren/abonneren", waarbij een kanaal wordt gecreƫerd waarvan berichten naar abonnees worden verspreid.
Belangrijke wijzigingen in Redis 8.4:
- Er is een commando "FT.HYBRID" toegevoegd met de implementatie van hybride zoekfunctionaliteit, die in ƩƩn verzoek mogelijkheden voor zowel full-text- als vectorzoekopdrachten combineert, rekening houdend met zowel directe overeenkomsten als semantische nabijheid. Aggregatiemogelijkheden van resultaten met de syntaxis van het commando "FT.AGGREGATE" worden ondersteund.
- De doorvoercapaciteit in typische toepassingen van Redis voor caching is verhoogd. Bijvoorbeeld, bij belastingen die 10% schrijfoperaties (SET) en 90% leesoperaties (GET) omvatten, is de doorvoercapaciteit met 30% toegenomen bij het opslaan van stringwaarden van 1 KB.

- De prestaties van zoekoperaties (FT.SEARCH) en aggregatie van resultaten (FT.AGGREGATE) zijn verbeterd. In belastte systemen met een groot aantal parallelle verzoeken is er een toename van de doorvoercapaciteit en een afname van de latentie tot wel 4,7 keer bij het uitvoeren van zoekopdrachten en tot 1,4 keer bij het aggregaren van resultaten.

- Het geheugenbeheer tijdens verzoekverwerking is geoptimaliseerd en er is de mogelijkheid toegevoegd om het gedrag bij uitputting van beschikbaar geheugen (OOM, out-of-memory) aan te passen.
- Het geheugenverbruik voor het opslaan van kleine strings (tot 7 bytes) in JSON-structuren is verminderd. Bijvoorbeeld, een JSON-array met 500 kleine sleutel/waarde-elementen neemt nu 37% minder geheugen in beslag.
- De efficiƫntie van het opslaan van numerieke JSON-arrays, waarvan alle elementen hetzelfde type hebben, is verhoogd (eerder werd voor elk element in een dergelijke array het type en de waarde opgeslagen, nu wordt het type slechts eenmaal voor de hele array opgeslagen). In een uitgevoerde test hebben dergelijke arrays met een miljoen homogene elementen nu 50-92% minder geheugen nodig, afhankelijk van het type.
- Er zijn opties IFEQ, IFNE, IFDEQ en IFDNE toegevoegd aan het SET-commando, zodat met ƩƩn commando een string-sleutel kan worden bijgewerkt wanneer de bijbehorende waarde niet door een andere client is gewijzigd sinds deze is opgehaald.
- De XDELEX-commando is toegevoegd voor atomair verwijderen van een string sleutel, als de bijbehorende waarde niet is veranderd sinds de extractie.
- Het DIGEST-commando is toegevoegd, dat de hash van de waarde teruggeeft die aan de opgegeven sleutel is gekoppeld.
- De optie "CLAIM " is toegevoegd aan het XREADGROUP-commando voor het lezen van zowel in wacht (idle pending) als binnengekomen (incoming) berichten.
- Het MSETEX-commando is toegevoegd voor atomair instellen of bijwerken van meerdere string sleutels tegelijk, evenals het bijwerken van hun levensduur.
- Een mechanisme voor atomaire migratie van slots tussen cluster nodes (ASM - Atomic Slot Migration) is toegevoegd, vergelijkbaar met volledige synchronisatie replicatie, maar werkend op het niveau van afzonderlijke data opslag slots. Het commando CLUSTER MIGRATION is toegevoegd, waarmee slots van andere nodes kunnen worden geĆÆmporteerd, de voortgang van de migratie kan worden gevolgd en, indien nodig, de uit te voeren migratie-operatie kan worden gemarkeerd als in afwachting.
- Het CLUSTER SLOT-STATS-commando is toegevoegd voor het beoordelen van de statistieken in het cluster op het niveau van afzonderlijke slots, zoals het aantal sleutels, CPU-belasting en netwerk in-/uitvoer.
Bron: opennet.ru


