NoSQL సిస్టమ్ల తరగతికి చెందిన Redis 7.0 DBMS విడుదల ప్రచురించబడింది. జాబితాలు, హ్యాష్లు మరియు సెట్ల వంటి నిర్మాణాత్మక డేటా ఫార్మాట్లకు మద్దతుతో మెరుగుపరచబడిన కీ/విలువ డేటాను నిల్వ చేయడానికి రెడిస్ ఫంక్షన్లను అందిస్తుంది, అలాగే లువాలో సర్వర్-సైడ్ స్క్రిప్ట్ హ్యాండ్లర్లను అమలు చేయగల సామర్థ్యం. ప్రాజెక్ట్ కోడ్ BSD లైసెన్స్ క్రింద సరఫరా చేయబడింది. RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom వంటి కార్పొరేట్ వినియోగదారుల కోసం అధునాతన సామర్థ్యాలను అందించే అదనపు మాడ్యూల్లు 2019 నుండి యాజమాన్య RSAL లైసెన్స్ క్రింద సరఫరా చేయబడ్డాయి. గుడ్ఫార్మ్ ప్రాజెక్ట్, ఇటీవల స్తబ్దుగా ఉంది, AGPLv3 లైసెన్స్ క్రింద ఈ మాడ్యూల్స్ యొక్క ఓపెన్ వెర్షన్ల అభివృద్ధిని కొనసాగించడానికి ప్రయత్నించింది.
Memcached వంటి ఇన్-మెమరీ స్టోరేజ్ సిస్టమ్ల వలె కాకుండా, Redis డేటా డిస్క్లో నిరంతరం నిల్వ చేయబడిందని నిర్ధారిస్తుంది మరియు క్రాష్ సంభవించినప్పుడు డేటాబేస్ చెక్కుచెదరకుండా ఉండేలా చేస్తుంది. ప్రాజెక్ట్ యొక్క సోర్స్ కోడ్ BSD లైసెన్స్ క్రింద పంపిణీ చేయబడింది. క్లయింట్ లైబ్రరీలు పెర్ల్, పైథాన్, PHP, జావా, రూబీ మరియు Tclతో సహా అత్యంత ప్రసిద్ధ భాషలకు అందుబాటులో ఉన్నాయి. రెడిస్ లావాదేవీలకు మద్దతు ఇస్తుంది, ఇది ఒక దశలో ఆదేశాల సమూహాన్ని అమలు చేయడానికి మిమ్మల్ని అనుమతిస్తుంది, ఇచ్చిన ఆదేశాల సెట్ను అమలు చేయడంలో స్థిరత్వం మరియు స్థిరత్వం (ఇతర అభ్యర్థనల నుండి వచ్చిన ఆదేశాలు జోక్యం చేసుకోలేవు) మరియు సమస్యల విషయంలో, మీరు వెనక్కి వెళ్లడానికి మిమ్మల్ని అనుమతిస్తుంది. మార్పులు. మొత్తం డేటా RAMలో పూర్తిగా కాష్ చేయబడింది.
డేటా మానిప్యులేషన్ కోసం ఇంక్రిమెంట్/తగ్గింపు, జాబితాలు మరియు సెట్లపై ప్రామాణిక కార్యకలాపాలు (యూనియన్, ఖండన), కీ పేరు మార్చడం, బహుళ ఎంపికలు మరియు సార్టింగ్ ఫంక్షన్లు వంటి ఆదేశాలు అందించబడతాయి. రెండు స్టోరేజ్ మోడ్లు మద్దతిస్తాయి: డేటాను డిస్క్కి క్రమానుగతంగా సమకాలీకరించడం మరియు డిస్క్కి మార్పులను లాగింగ్ చేయడం. రెండవ సందర్భంలో, అన్ని మార్పుల యొక్క పూర్తి భద్రత హామీ ఇవ్వబడుతుంది. నాన్-బ్లాకింగ్ మోడ్లో నిర్వహించబడే అనేక సర్వర్లకు మాస్టర్-స్లేవ్ డేటా ప్రతిరూపణను నిర్వహించడం సాధ్యమవుతుంది. పబ్లిష్/సబ్స్క్రయిబ్ మెసేజింగ్ మోడ్ కూడా అందుబాటులో ఉంది, దీనిలో ఛానెల్ సృష్టించబడుతుంది, దాని నుండి సబ్స్క్రైబ్ చేసిన క్లయింట్లకు సందేశాలు పంపిణీ చేయబడతాయి.
Redis 7.0లో కీలక మార్పులు:
- సర్వర్ వైపు ఫంక్షన్లకు మద్దతు జోడించబడింది. Lua భాషలో మునుపు మద్దతు ఉన్న స్క్రిప్ట్ల వలె కాకుండా, ఫంక్షన్లు అప్లికేషన్తో ముడిపడి ఉండవు మరియు సర్వర్ యొక్క సామర్థ్యాలను విస్తరించే అదనపు లాజిక్ను అమలు చేయడం లక్ష్యంగా పెట్టుకున్నాయి. విధులు డేటాతో మరియు డేటాబేస్కు సంబంధించి విడదీయరాని విధంగా ప్రాసెస్ చేయబడతాయి మరియు అనువర్తనానికి కాదు, ప్రతిరూపం మరియు నిరంతర నిల్వలో నిల్వ చేయబడతాయి.
- ACL యొక్క రెండవ ఎడిషన్ ప్రతిపాదించబడింది, ఇది కీల ఆధారంగా డేటాకు యాక్సెస్ను నియంత్రించడానికి మిమ్మల్ని అనుమతిస్తుంది మరియు ప్రతి వినియోగదారుకు అనేక సెలెక్టర్లను (అనుమతుల సెట్లు) బైండ్ చేసే సామర్థ్యంతో ఆదేశాలను యాక్సెస్ చేయడానికి వివిధ సెట్ల నియమాలను నిర్వచించడానికి మిమ్మల్ని అనుమతిస్తుంది. ప్రతి కీని నిర్దిష్ట అధికారంతో గుర్తించవచ్చు, ఉదాహరణకు, మీరు నిర్దిష్ట కీల ఉపసమితిని చదవడానికి లేదా వ్రాయడానికి మాత్రమే ప్రాప్యతను పరిమితం చేయవచ్చు.
- ఒక క్లస్టర్లో నడుస్తున్న ప్రచురించు-సబ్స్క్రయిబ్ మెసేజ్ డిస్ట్రిబ్యూషన్ నమూనా యొక్క విభజించబడిన (షార్డ్) అమలు అందించబడింది, దీనిలో సందేశ ఛానెల్ జోడించబడిన నిర్దిష్ట నోడ్కు సందేశం పంపబడుతుంది, ఆ తర్వాత ఈ సందేశం చేర్చబడిన మిగిలిన నోడ్లకు దారి మళ్లించబడుతుంది. చీరలో. క్లయింట్లు మెయిన్ నోడ్కి మరియు సెక్షన్ యొక్క సెకండరీ నోడ్లకు కనెక్ట్ చేయడం ద్వారా ఛానెల్కు సబ్స్క్రయిబ్ చేయడం ద్వారా సందేశాలను అందుకోవచ్చు. SSUBSCRIBE, SUNSUBSCRIBE మరియు SPUBLISH ఆదేశాలను ఉపయోగించి నియంత్రణ నిర్వహించబడుతుంది.
- చాలా సందర్భాలలో సబ్కమాండ్లను ప్రాసెస్ చేయడానికి మద్దతు జోడించబడింది.
- కొత్త ఆదేశాలు జోడించబడ్డాయి:
- ZMPOP, BZMPOP.
- LMPOP, BLMPOP.
- సింటర్కార్డ్, జింటర్కార్డ్.
- ప్రచురించండి, సబ్స్క్రయిబ్ చేయండి, సన్సబ్స్క్రయిబ్ చేయండి, పబ్సబ్ షార్డ్ ఛానెల్లు/షార్డ్నమ్సబ్.
- EXPIRETIME, PEXPIRETIME.
- EVAL_RO, EVALSHA_RO, SORT_RO.
- FUNCTION *, FCALL, FCALL_RO.
- కమాండ్ డాక్స్, కమాండ్ లిస్ట్.
- లాటెన్సీ హిస్టోగ్రామ్.
- క్లస్టర్ షార్డ్స్, క్లస్టర్ లింక్లు, క్లస్టర్ డెల్స్లాట్స్రేంజ్, క్లస్టర్ యాడ్స్లాట్స్రేంజ్.
- క్లయింట్ NO-EVICT.
- ACL డ్రైరన్.
- ఒక CONFIG SET/GET కాల్లో ఒకేసారి బహుళ కాన్ఫిగరేషన్లను ప్రాసెస్ చేయగల సామర్థ్యం అందించబడింది.
- "-json", "-2", "-scan", "-functions-rdb" ఎంపికలు redis-cli యుటిలిటీకి జోడించబడ్డాయి.
- డిఫాల్ట్గా, భద్రతను ప్రభావితం చేసే సెట్టింగ్లు మరియు ఆదేశాలకు క్లయింట్ యాక్సెస్ నిలిపివేయబడింది (ఉదాహరణకు, DEBUG మరియు MODULE ఆదేశాలు నిలిపివేయబడ్డాయి, PROTECTED_CONFIG ఫ్లాగ్తో కాన్ఫిగరేషన్లను మార్చడం నిషేధించబడింది). Redis-cli ఇకపై చరిత్ర ఫైల్కు సున్నితమైన డేటాను కలిగి ఉన్న ఆదేశాలను అవుట్పుట్ చేయదు.
- పనితీరును పెంచడం మరియు మెమరీ వినియోగాన్ని తగ్గించడం లక్ష్యంగా ఆప్టిమైజేషన్లలో ఎక్కువ భాగం ప్రవేశపెట్టబడింది. ఉదాహరణకు, క్లస్టర్ మోడ్ని ఎనేబుల్ చేస్తున్నప్పుడు, కాపీ-ఆన్-రైట్ ఆపరేషన్లను చేస్తున్నప్పుడు మరియు హ్యాష్లు మరియు zset కీలతో పని చేస్తున్నప్పుడు మెమరీ వినియోగం గణనీయంగా తగ్గింది. డిస్క్కి డేటాను ఫ్లష్ చేయడానికి మెరుగైన లాజిక్ (fsync కాల్). క్లయింట్కు ప్రతిస్పందనలను పంపుతున్నప్పుడు నెట్వర్క్ ప్యాకెట్లు మరియు సిస్టమ్ కాల్ల సంఖ్య తగ్గించబడింది. ప్రతిరూపణ సామర్థ్యం మెరుగుపరచబడింది.
- Lua స్క్రిప్ట్లను అమలు చేయడానికి వాతావరణంలో హాని CVE-2022-24735 పరిష్కరించబడింది, ఇది మీ స్వంత Lua కోడ్ను ప్రత్యామ్నాయం చేయడానికి మరియు అధిక అధికారాలతో సహా మరొక వినియోగదారు సందర్భంలో దాని అమలును సాధించడానికి మిమ్మల్ని అనుమతిస్తుంది.
- స్థిర దుర్బలత్వం CVE-2022-24736, ఇది NULL పాయింటర్ డెరిఫరెన్స్ కారణంగా క్రాష్ కావడానికి redis-సర్వర్ ప్రాసెస్ని అనుమతిస్తుంది. ప్రత్యేకంగా రూపొందించిన లువా స్క్రిప్ట్లను లోడ్ చేయడం ద్వారా దాడి జరుగుతుంది.
మూలం: opennet.ru