Հրապարակվել է Redis 7.0 DBMS-ի թողարկումը, որը պատկանում է NoSQL համակարգերի դասին։ Redis-ն ապահովում է հիմնական/արժեքի տվյալները պահելու գործառույթներ՝ ընդլայնված տվյալների կառուցվածքային ձևաչափերի աջակցությամբ, ինչպիսիք են ցուցակները, հեշերը և հավաքածուները, ինչպես նաև Lua-ում սերվերի կողմից սկրիպտների մշակիչներ գործարկելու ունակությամբ: Ծրագրի կոդը տրամադրվում է BSD լիցենզիայի ներքո: Լրացուցիչ մոդուլներ, որոնք առաջարկում են առաջադեմ հնարավորություններ կորպորատիվ օգտատերերի համար, ինչպիսիք են RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, մատակարարվում են RSAL լիցենզիայի ներքո 2019 թվականից: GoodFORM նախագիծը, որը վերջերս լճացել էր, փորձեց շարունակել այս մոդուլների բաց տարբերակների մշակումը AGPLv3 լիցենզիայի ներքո:
Ի տարբերություն հիշողության մեջ պահվող համակարգերի, ինչպիսին է Memcached-ը, Redis-ն ապահովում է տվյալների մշտական պահպանումը սկավառակի վրա և ապահովում է, որ տվյալների բազան անփոփոխ մնա խափանման դեպքում: Նախագծի սկզբնական կոդը տարածվում է BSD լիցենզիայի ներքո: Հաճախորդի գրադարանները հասանելի են ամենատարածված լեզուների համար, ներառյալ Perl, Python, PHP, Java, Ruby և Tcl: Redis-ն աջակցում է գործարքներին, որոնք թույլ են տալիս կատարել հրամանների խումբ մեկ քայլով՝ ապահովելով հետևողականություն և հետևողականություն (այլ հարցումների հրամանները չեն կարող խանգարել) տվյալ հրամանների կատարմանը, իսկ խնդիրների դեպքում՝ թույլ տալով հետ շրջվել։ փոփոխությունները։ Բոլոր տվյալները ամբողջությամբ պահվում են RAM-ում:
Տվյալների կառավարման համար տրամադրվում են այնպիսի հրամաններ, ինչպիսիք են ավելացում/նվազում, ստանդարտ ցուցակի և հավաքածուի գործողություններ (միավորում, խաչմերուկ), բանալիների անվանափոխում, բազմակի ընտրություն և տեսակավորման գործառույթներ: Աջակցվում է պահեստավորման երկու ռեժիմ՝ տվյալների պարբերական համաժամացում սկավառակի վրա և սկավառակի վրա փոփոխությունների գրանցամատյանի պահպանում: Երկրորդ դեպքում բոլոր փոփոխությունների ամբողջական անվտանգությունը երաշխավորված է։ Հնարավոր է կազմակերպել master-slave տվյալների վերարտադրությունը մի քանի սերվերների վրա, որն իրականացվում է ոչ արգելափակման ռեժիմով: Հասանելի է նաև «հրապարակել/բաժանորդագրվել» հաղորդագրությունների ռեժիմը, որում ստեղծվում է ալիք, որից հաղորդագրությունները բաժանորդագրության միջոցով բաժանվում են հաճախորդներին:
Հիմնական փոփոխություններ Redis 7.0-ում.
- Ավելացվեց սերվերի կողմից գործառույթների աջակցություն: Ի տարբերություն Lua լեզվով նախկինում աջակցվող սկրիպտների, գործառույթները կապված չեն հավելվածի հետ և ուղղված են լրացուցիչ տրամաբանության իրականացմանը, որն ընդլայնում է սերվերի հնարավորությունները: Գործառույթները անքակտելիորեն մշակվում են տվյալների հետ և տվյալների բազայի հետ կապված, այլ ոչ թե հավելվածի հետ, այդ թվում՝ կրկնօրինակվելով և պահվում են մշտական պահեստում:
- Առաջարկվել է ACL-ի երկրորդ հրատարակությունը, որը թույլ է տալիս վերահսկել տվյալների հասանելիությունը ստեղների հիման վրա և թույլ է տալիս սահմանել հրամաններ մուտք գործելու կանոնների տարբեր հավաքածուներ՝ յուրաքանչյուր օգտվողին մի քանի ընտրիչ (թույլտվությունների հավաքածու) կապելու ունակությամբ: Յուրաքանչյուր բանալի կարող է նույնականացվել որոշակի հեղինակության հետ, օրինակ՝ դուք կարող եք սահմանափակել մուտքը միայն ստեղների որոշակի ենթաբազմություն կարդալու կամ գրելու համար:
- Տրամադրվում է «Հրապարակել-Բաժանորդագրվել» հաղորդագրությունների բաշխման պարադիգմի բաժանված (կտրված) իրականացումը, որն աշխատում է կլաստերի մեջ, որում հաղորդագրություն է ուղարկվում կոնկրետ հանգույց, որին կցված է հաղորդագրության ալիքը, որից հետո այս հաղորդագրությունը վերահղվում է ընդգրկված մնացած հանգույցներին: բեկորի մեջ. Հաճախորդները կարող են հաղորդագրություններ ստանալ՝ բաժանորդագրվելով ալիքին՝ ինչպես հիմնական հանգույցին միանալով, այնպես էլ բաժնի երկրորդական հանգույցներին։ Վերահսկումն իրականացվում է SSUBSCRIBE, SUNSUBSCRIBE և SPUBLISH հրամանների միջոցով:
- Ավելացվել է ենթահրամանների մշակման աջակցություն շատ համատեքստերում:
- Ավելացվեցին նոր հրամաններ.
- ZMPOP, BZMPOP.
- LMPOP, BLMPOP.
- SINTERCARD, ZINTERCARD.
- ՀՐԱՊԱՐԱԿԵԼ, ԲԱԺԱՆՈՐԴԱԳՐՎԵԼ, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB:
- ԺԱՄԱՆԱԿ, ԺԱՄԱՆԱԿ.
- EVAL_RO, EVALSHA_RO, SORT_RO:
- FUNCTION *, FCALL, FCALL_RO:
- ՀՐԱՄԱՆԱԿԱՆ ՓԱՍՏԱԹՂԹԵՐ, ՀՐԱՄԱՆԱԿԱՆ ՑԱՆԿ:
- ԼԱՏԵՆՍԻ ՀԻՍՏՈԳՐԱՄԱ.
- CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE:
- ՀԱՃԱԽՈՐԴԻ ԱՆՎՏԱՐԳՈՒՄ.
- ACL DRYRUN.
- Ապահովված է մեկ 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 խոցելիությունը, որը թույլ է տալիս redis-server պրոցեսին խափանել NULL ցուցիչի մատնանշման պատճառով: Հարձակումն իրականացվում է հատուկ մշակված Lua սցենարների բեռնման միջոցով։
Source: opennet.ru