Redis 7.0-release

De release van Redis 7.0 DBMS, die tot de klasse van NoSQL-systemen behoort, is gepubliceerd. Redis biedt functies voor het opslaan van sleutel-/waardegegevens, uitgebreid door ondersteuning voor gestructureerde gegevensformaten zoals lijsten, hashes en sets, evenals de mogelijkheid om scripthandlers op de server in Lua uit te voeren. De projectcode wordt geleverd onder de BSD-licentie. Extra modules die geavanceerde mogelijkheden bieden voor zakelijke gebruikers, zoals RediSearch, RedisGraph, RedisJSON, RedisML en RedisBloom, worden sinds 2019 geleverd onder een eigen RSAL-licentie. Het GoodFORM-project, dat de laatste tijd stagneert, probeerde de ontwikkeling van open versies van deze modules onder de AGPLv3-licentie voort te zetten.

In tegenstelling tot in-memory opslagsystemen zoals Memcached, zorgt Redis ervoor dat gegevens permanent op schijf worden opgeslagen en zorgt ervoor dat de database intact blijft in geval van een crash. De broncode van het project wordt gedistribueerd onder de BSD-licentie. Clientbibliotheken zijn beschikbaar voor de meeste populaire talen, waaronder Perl, Python, PHP, Java, Ruby en Tcl. Redis ondersteunt transacties, waarmee u een groep opdrachten in één stap kunt uitvoeren, waardoor consistentie en consistentie wordt gegarandeerd (opdrachten van andere verzoeken kunnen niet interfereren) bij de uitvoering van een bepaalde reeks opdrachten, en u in geval van problemen kunt terugdraaien veranderingen. Alle gegevens worden volledig in het RAM-geheugen opgeslagen.

Voor gegevensbeheer zijn opdrachten beschikbaar zoals verhogen/verlagen, standaardlijst- en setbewerkingen (samenvoeging, snijpunt), het hernoemen van sleutels, meervoudige selecties en sorteerfuncties. Er worden twee opslagmodi ondersteund: periodieke synchronisatie van gegevens naar schijf en onderhoud van een wijzigingsaanmelding op schijf. In het tweede geval is de volledige veiligheid van alle wijzigingen gegarandeerd. Het is mogelijk om master-slave-gegevensreplicatie naar meerdere servers te organiseren, uitgevoerd in een niet-blokkerende modus. Er is ook een berichtenmodus “publiceren/abonneren” beschikbaar, waarin een kanaal wordt gecreëerd, van waaruit berichten via een abonnement naar klanten worden gedistribueerd.

Belangrijkste wijzigingen in Redis 7.0:

  • Ondersteuning toegevoegd voor functies aan de serverzijde. In tegenstelling tot eerder ondersteunde scripts in de Lua-taal, zijn de functies niet gebonden aan de applicatie en zijn ze gericht op het implementeren van extra logica die de mogelijkheden van de server uitbreidt. Functies worden onlosmakelijk met de gegevens en in relatie tot de database verwerkt, en niet met de applicatie, en worden ook gerepliceerd en opgeslagen in permanente opslag.
  • Er is een tweede editie van de ACL voorgesteld, waarmee u de toegang tot gegevens kunt controleren op basis van sleutels en waarmee u verschillende sets regels kunt definiëren voor toegang tot opdrachten, met de mogelijkheid om verschillende selectors (sets met machtigingen) aan elke gebruiker te koppelen. Elke sleutel kan worden geïdentificeerd met een specifieke autoriteit. U kunt bijvoorbeeld de toegang beperken tot het lezen of schrijven van een bepaalde subset van sleutels.
  • Er wordt voorzien in een gepartitioneerde (sharded) implementatie van het Publish-Subscribe-berichtdistributieparadigma dat in een cluster draait, waarin een bericht wordt verzonden naar een specifiek knooppunt waaraan een berichtenkanaal is gekoppeld, waarna dit bericht wordt omgeleid naar de overige inbegrepen knooppunten in de scherf. Klanten kunnen berichten ontvangen door zich te abonneren op een kanaal, zowel door verbinding te maken met het hoofdknooppunt als met de secundaire knooppunten van de sectie. De besturing wordt uitgevoerd met behulp van de opdrachten SSUBSCRIBE, SUNSUBSCRIBE en SPUBLISH.
  • Ondersteuning toegevoegd voor het verwerken van subopdrachten in de meeste contexten.
  • Nieuwe commando's toegevoegd:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERKAART, ZINTERKAART.
    • SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • VERVALTIJD, PEXPIRETIJD.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCTIE *, FCALL, FCALL_RO.
    • OPDRACHTDOCUMENTEN, OPDRACHTENLIJST.
    • LATENTIEHISTOGRAM.
    • CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • KLANT GEEN UITGEBRUIK.
    • ACL DRYRUN.
  • Er is de mogelijkheid geboden om meerdere configuraties tegelijk te verwerken in één CONFIG SET/GET-oproep.
  • Opties “-json”, “-2”, “-scan”, “-functions-rdb” zijn toegevoegd aan het redis-cli-hulpprogramma.
  • Standaard is clienttoegang tot instellingen en opdrachten die van invloed zijn op de beveiliging uitgeschakeld (de opdrachten DEBUG en MODULE zijn bijvoorbeeld uitgeschakeld, het wijzigen van configuraties met de vlag PROTECTED_CONFIG is niet toegestaan). Redis-cli voert niet langer opdrachten uit die gevoelige gegevens bevatten naar een geschiedenisbestand.
  • Een groot deel van de optimalisaties is geïntroduceerd om de prestaties te verbeteren en het geheugenverbruik te verminderen. Het geheugengebruik is bijvoorbeeld aanzienlijk verminderd bij het inschakelen van de clustermodus, bij het uitvoeren van copy-on-write-bewerkingen en bij het werken met hashes en zset-sleutels. Verbeterde logica voor het leegmaken van gegevens naar schijf (fsync-aanroep). Het aantal netwerkpakketten en systeemoproepen bij het verzenden van antwoorden naar de client is verminderd. De replicatie-efficiëntie is verbeterd.
  • De kwetsbaarheid CVE-2022-24735 in de omgeving voor het uitvoeren van Lua-scripts is verholpen, waardoor u uw eigen Lua-code kunt vervangen en de uitvoering ervan kunt bewerkstelligen in de context van een andere gebruiker, inclusief iemand met hogere rechten.
  • Kwetsbaarheid CVE-2022-24736 opgelost, waardoor het redis-serverproces crasht als gevolg van NULL pointer-dereferentie. De aanval wordt uitgevoerd door het laden van speciaal ontworpen Lua-scripts.

Bron: opennet.ru

Voeg een reactie