Versió de Redis 7.0

S'ha publicat el llançament del SGBD Redis 7.0, que pertany a la classe de sistemes NoSQL. Redis ofereix funcions per emmagatzemar dades de clau/valor, millorades pel suport per a formats de dades estructurades com ara llistes, hash i conjunts, així com la possibilitat d'executar controladors d'script del costat del servidor a Lua. El codi del projecte es subministra sota la llicència BSD. Mòduls addicionals que ofereixen capacitats avançades per als usuaris corporatius, com ara RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, s'han subministrat sota una llicència RSAL propietat des del 2019. El projecte GoodFORM, que recentment s'ha estancat, va intentar continuar el desenvolupament de versions obertes d'aquests mòduls sota la llicència AGPLv3.

A diferència dels sistemes d'emmagatzematge en memòria com Memcached, Redis assegura que les dades s'emmagatzemen de manera persistent al disc i assegura que la base de dades es mantingui intacta en cas d'error. El codi font del projecte es distribueix sota la llicència BSD. Les biblioteques de client estan disponibles per als idiomes més populars, com ara Perl, Python, PHP, Java, Ruby i Tcl. Redis admet transaccions, que us permeten executar un grup d'ordres en un sol pas, assegurant la coherència i la coherència (les ordres d'altres peticions no poden interferir) en l'execució d'un conjunt determinat d'ordres i, en cas de problemes, us permeten retrocedir. canvis. Totes les dades s'emmagatzemen completament a la memòria cau a la memòria RAM.

Per a la gestió de dades s'ofereixen ordres com ara increment/disminució, llista estàndard i operacions de conjunt (unió, intersecció), canvi de nom de tecles, seleccions múltiples i funcions d'ordenació. S'admeten dos modes d'emmagatzematge: sincronització periòdica de dades al disc i manteniment d'un registre de canvis al disc. En el segon cas, es garanteix la total seguretat de tots els canvis. És possible organitzar la replicació de dades mestre-esclau a diversos servidors, realitzada en mode no bloquejant. També hi ha disponible un mode de missatgeria “publicar/subscriure”, en el qual es crea un canal, des del qual es distribueixen missatges als clients per subscripció.

Canvis clau a Redis 7.0:

  • S'ha afegit suport per a funcions del costat del servidor. A diferència dels scripts suportats anteriorment en el llenguatge Lua, les funcions no estan lligades a l'aplicació i estan destinades a implementar una lògica addicional que ampliï les capacitats del servidor. Les funcions es processen de manera inextricable amb les dades i en relació amb la base de dades, i no amb l'aplicació, inclòs la replicació i l'emmagatzematge en un emmagatzematge persistent.
  • S'ha proposat una segona edició de l'ACL, que permet controlar l'accés a les dades a partir de claus i permet definir diferents conjunts de regles per accedir a les ordres amb la possibilitat d'enllaçar diversos selectors (conjunts de permisos) a cada usuari. Cada clau es pot identificar amb una autoritat específica, per exemple, podeu limitar l'accés només a llegir o escriure un determinat subconjunt de claus.
  • Es proporciona una implementació particionada (partida) del paradigma de distribució de missatges Publish-Subscribe que s'executa en un clúster, en la qual s'envia un missatge a un node específic al qual s'adjunta un canal de missatges, després del qual aquest missatge es redirigeix ​​als nodes restants inclosos. en el fragment. Els clients poden rebre missatges mitjançant la subscripció a un canal, tant connectant-se al node principal com als nodes secundaris de la secció. El control es realitza mitjançant les ordres SSUBSCRIBE, SUNSUBSCRIBE i SPUBLISH.
  • S'ha afegit suport per processar subordres en la majoria de contextos.
  • S'han afegit noves ordres:
    • ZMPOP, BZMPOP.
    • LMPOP, BLMPOP.
    • SINTERCARD, ZINTERCARD.
    • PUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
    • TEMPS DE CADUCCIÓ, TEMPS DE CADUCCIÓ.
    • EVAL_RO, EVALSHA_RO, SORT_RO.
    • FUNCIÓ *, FCALL, FCALL_RO.
    • DOCUMENTS DE COMANDA, LLISTA DE COMANDA.
    • HISTÒGRA DE LATÈNCIA.
    • CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
    • CLIENT NO-EXPECTACIÓ.
    • ACL DRYRUN.
  • S'ha proporcionat la possibilitat de processar diverses configuracions alhora en una trucada CONFIG SET/GET.
  • Les opcions "-json", "-2", "-scan", "-functions-rdb" s'han afegit a la utilitat redis-cli.
  • De manera predeterminada, l'accés del client a la configuració i les ordres que afecten la seguretat està desactivat (per exemple, les ordres DEBUG i MODULE estan desactivades, es prohibeix canviar les configuracions amb el senyalador PROTECTED_CONFIG). redis-cli ja no envia ordres que contenen dades sensibles a un fitxer d'historial.
  • S'ha introduït una gran part d'optimitzacions destinades a augmentar el rendiment i reduir el consum de memòria. Per exemple, el consum de memòria s'ha reduït significativament quan s'habilita el mode de clúster, quan es realitzen operacions de còpia sobre escriptura i quan es treballa amb hash i tecles zset. Lògica millorada per netejar les dades al disc (trucada fsync). S'ha reduït el nombre de paquets de xarxa i de trucades al sistema quan s'envien respostes al client. S'ha millorat l'eficiència de la replicació.
  • S'ha corregit la vulnerabilitat CVE-2022-24735 a l'entorn per executar scripts Lua, que permet substituir el vostre propi codi Lua i aconseguir la seva execució en el context d'un altre usuari, inclòs un amb privilegis superiors.
  • S'ha solucionat la vulnerabilitat CVE-2022-24736, que permetia que el procés del servidor redis es bloquegi a causa de la desreferència del punter NULL. L'atac es porta a terme mitjançant la càrrega d'scripts Lua especialment dissenyats.

Font: opennet.ru

Afegeix comentari