{"id":91846,"date":"2020-08-19T19:41:57","date_gmt":"2020-08-19T17:41:57","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/o-pereezde-s-redis-na-redis-cluster"},"modified":"2020-08-19T19:41:57","modified_gmt":"2020-08-19T17:41:57","slug":"o-pereezde-s-redis-na-redis-cluster","status":"publish","type":"post","link":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/o-pereezde-s-redis-na-redis-cluster","title":{"rendered":"Par p\u0101reju no Redis uz Redis-cluster","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Par p\u0101reju no Redis uz Redis-cluster\" src=\"\/wp-content\/uploads\/2020\/08\/ea8bc47f73ef3b06ccfdf94d323592bf.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ien\u0101kot produkt\u0101, kas att\u012bst\u0101s vair\u0101k nek\u0101 desmit gadus, nav p\u0101rsteidzo\u0161i sastapt novecoju\u0161as tehnolo\u0123ijas. Bet, ja p\u0113c se\u0161iem m\u0113ne\u0161iem jums b\u016bs j\u0101iztur slodze, kas ir desmit reizes liel\u0101ka, un k\u013c\u016bdu cena pieaugs simtiem rei\u017eu? \u0160aj\u0101 gad\u012bjum\u0101 jums ir nepiecie\u0161ams gudrs Highload in\u017eenieris. Bet, t\u0101 k\u0101 nebija neviena, kur\u0161 var\u0113tu pal\u012bdz\u0113t, \u0161\u012b probl\u0113ma bija uztic\u0113ta man. Pirmaj\u0101 raksta da\u013c\u0101 es past\u0101st\u012b\u0161u, k\u0101 m\u0113s p\u0101rg\u0101j\u0101m no Redis uz Redis-cluster, bet otraj\u0101 da\u013c\u0101 snieg\u0161u padomus, k\u0101 s\u0101kt izmantot klasteri un uz ko piev\u0113rst uzman\u012bbu t\u0101 ekspluat\u0101cij\u0101.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"vybor-tehnologii\">Tehnolo\u0123ijas izv\u0113le<\/h1>\n<p><\/p>\n<p>Cik slikts <em>atskirtais Redis<\/em> (standalone redis) konfigur\u0101cij\u0101 1 meistars un N vergi? K\u0101p\u0113c es to uzskatu par novecoju\u0161u tehnolo\u0123iju?<\/p>\n<p><\/p>\n<blockquote><p>N\u0113, Redis nav tik slikts\u2026 Tom\u0113r ir da\u017ei tr\u016bkumi, kurus nevar ignor\u0113t.<\/p><\/blockquote>\n<p><\/p>\n<ul>\n<li>\n<p>Pirmk\u0101rt, Redis neatbalsta katastrofu atjauno\u0161anas meh\u0101nismus p\u0113c meista kritiena. Lai atrisin\u0101tu \u0161o probl\u0113mu, m\u0113s izmantoj\u0101m konfigur\u0101ciju ar autom\u0101tisku VIP p\u0101rvieto\u0161anu uz jauno meistaru, mainot viena no vergiem lomu un p\u0101rsl\u0113dzot p\u0101r\u0113jos. \u0160is meh\u0101nisms darboj\u0101s, ta\u010du to nevar\u0113ja nosaukt par uzticamu risin\u0101jumu. Pirmk\u0101rt, notika viltus trauksmes, un, otrk\u0101rt, tas bija vienreiz\u0113js, un p\u0113c aktiviz\u0113\u0161anas bija nepiecie\u0161amas roku darb\u012bbas, lai visu atkal savestu k\u0101rt\u012bb\u0101.<\/p>\n<p>\n<\/li>\n<li>\n<p>Otrk\u0101rt, tikai viena meistara kl\u0101tb\u016btne rad\u012bja \u0161ard\u0113\u0161anas probl\u0113mu. Bija nepiecie\u0161ams izveidot vair\u0101kus neatkar\u012bgus klasterus \"1 meistars un N vergi\", p\u0113c tam manu\u0101li izdal\u012bt datus pa \u0161\u012bm ma\u0161\u012bn\u0101m un cer\u0113t, ka r\u012bt k\u0101ds no datu b\u0101z\u0113m nepiedzimst tik liels, ka to n\u0101ksies novietot uz atsevi\u0161\u0137a instanc\u0113.<\/p>\n<p>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>K\u0101di ir varianti?<\/p>\n<p><\/p>\n<ul>\n<li>Visd\u0101rg\u0101kais un bag\u0101t\u0101kais risin\u0101jums ir Redis-Enterprise. \u0160is ir kompleksais risin\u0101jums ar pilnu tehnisko atbalstu. Neskatoties uz to, ka tas tehniski izskat\u0101s ide\u0101li, ideolo\u0123isku iemeslu d\u0113\u013c mums tas nebija piem\u0113rots. <\/li>\n<li>Redis-cluster. Izsist\u0113 ir atbalsts katastrofu p\u0101rsl\u0113g\u0161anai uz meistaru un \u0161ard\u0113\u0161anai. Saskarne gandr\u012bz neat\u0161\u0137iras no parast\u0101s versijas. Izskat\u0101s daudzsolo\u0161s, par zem\u016bdens akme\u0146iem run\u0101sim t\u0101l\u0101k.<\/li>\n<li>Tarantool, Memcache, Aerospike un citi. Visi \u0161ie r\u012bki veic aptuveni to pa\u0161u. Bet katram ir savi tr\u016bkumi. M\u0113s nol\u0113m\u0101m nesalikt visus olas vien\u0101 groz\u0101. Memcache un Tarantool m\u0113s izmantojam cit\u0101m vajadz\u012bb\u0101m, un, iepriek\u0161 nosakot, varu teikt, ka m\u016bsu praks\u0113 ar tiem bija vair\u0101k probl\u0113mu.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"specifika-ispolzovaniya\">Izmanto\u0161anas specifika<\/h1>\n<p><\/p>\n<p>Paskat\u012bsimies, k\u0101das uzdevumus m\u0113s v\u0113sturisk\u0101 gaism\u0101 esam risin\u0101ju\u0161i ar Redis un k\u0101du funkcionalit\u0101ti izmantoju\u0161i:<\/p>\n<p><\/p>\n<ul>\n<li>Ke\u0161atmi\u0146a pirms piepras\u012bjumiem uz att\u0101lin\u0101tiem pakalpojumiem, piem\u0113ram, 2GIS | Golang<br \/>\n<blockquote><p>GET SET MGET MSET \"IZV\u0112L\u0112TIES DB\"\n<\/p><\/blockquote>\n<\/li>\n<li>Ke\u0161atmi\u0146a pirms MYSQL | PHP<br \/>\n<blockquote><p>GET SET MGET MSET SCAN \"ATSL\u0112GA PA PARAU\u0122U\" \"IZV\u0112L\u0112TIES DB\"\n<\/p><\/blockquote>\n<\/li>\n<li>Galvenais kr\u0101tuve sesiju un \u0161oferu koordin\u0101tu apstr\u0101dei | Golang<br \/>\n<blockquote><p>GET SET MGET MSET \"IZV\u0112L\u0112TIES DB\" \"PIEVIENOT GEO ATSL\u0112GU\" \"IEG\u016aT GEO ATSL\u0112GU\" SCAN\n<\/p><\/blockquote>\n<\/li>\n<\/ul>\n<p><\/p>\n<p>K\u0101 redzat, nav nek\u0101das augst\u0101k\u0101s matem\u0101tikas. K\u0101p\u0113c tad ir sare\u017e\u0123\u012bjumi? Apskat\u012bsim katru metodi atsevi\u0161\u0137i.<\/p>\n<p><\/p>\n<p>Metode<br \/>\nApraksts<br \/>\nRedis-klastera \u012bpatn\u012bbas<br \/>\nRisin\u0101jums<\/p>\n<p>GET SET<br \/>\nIerakst\u012bt\/izlas\u012bt atsl\u0113gu<\/p>\n<p>MGET MSET<br \/>\nIerakst\u012bt\/izlas\u012bt vair\u0101kas atsl\u0113gas<br \/>\nAtsl\u0113gas b\u016bs da\u017e\u0101d\u0101s mezglos. Gatavas bibliot\u0113kas sp\u0113j veikt Multi-darb\u012bbas tikai viena mezgla ietvaros<br \/>\nAizvietot MGET ar pipeline no N GET oper\u0101cij\u0101m<\/p>\n<p>IZV\u0112L\u0112T DB<br \/>\nIzv\u0113l\u0113ties datub\u0101zi, ar kuru str\u0101d\u0101sim<br \/>\nNepodut vair\u0101ku datub\u0101zu atbalstu<br \/>\nVisu likt vien\u0101 datub\u0101z\u0113. Pievienot prefiksus atsl\u0113g\u0101m<\/p>\n<p>SCAN<br \/>\nIziet cauri vis\u0101m atsl\u0113g\u0101m datub\u0101z\u0113<br \/>\nT\u0101 k\u0101 mums ir viena datub\u0101ze, iziet cauri vis\u0101m atsl\u0113g\u0101m klaster\u012b ir p\u0101r\u0101k d\u0101rgi<br \/>\nUztur\u0113t invariantu vienas atsl\u0113gas ietvaros un veikt HSCAN \u0161ai atsl\u0113gai. Vai nu atteikties pavisam<\/p>\n<p>GEO<br \/>\nDarb\u012bbas ar geoatsl\u0113gu<br \/>\nGeoatsl\u0113ga nav shardota<\/p>\n<p>ATSLEGA PA MODELI<br \/>\nMekl\u0113t atsl\u0113gu p\u0113c mode\u013ca<br \/>\nT\u0101 k\u0101 mums ir viena datub\u0101ze, mekl\u0113sim vis\u0101s atsl\u0113g\u0101s klaster\u012b. P\u0101r\u0101k d\u0101rgi<br \/>\nAteikties vai uztur\u0113t invariantu, k\u0101 tas ir gad\u012bjum\u0101 ar SCAN<\/p>\n<p><\/p>\n<h1 id=\"redis-vs-redis-cluster\">Redis pret Redis-klasteri<\/h1>\n<p><\/p>\n<p>Ko m\u0113s zaud\u0113jam un ko ieg\u016bstam, p\u0101rejot uz klasteri?<\/p>\n<p><\/p>\n<ul>\n<li>Tr\u016bkumi: zaud\u0113jam funkcionalit\u0101ti daudzu datub\u0101zu gad\u012bjum\u0101. \n<ul>\n<li>Ja v\u0113lamies saglab\u0101t vien\u0101 klaster\u012b lo\u0123iski nesaist\u012btus datus, b\u016bs j\u0101dara piel\u0101gojumi, pievienojot prefiksus. <\/li>\n<li>Zaud\u0113jam visas darb\u012bbas \"pa datub\u0101zi\", piem\u0113ram, SCAN, DBSIZE, CLEAR DB u.c.<\/li>\n<li>Multi-darb\u012bbas ir k\u013cuvu\u0161as iev\u0113rojami sare\u017e\u0123\u012bt\u0101kas, jo var b\u016bt nepiecie\u0161ams v\u0113rsties pie vair\u0101k nek\u0101 viena mezgla.<\/li>\n<\/ul>\n<\/li>\n<li>Priek\u0161roc\u012bbas: \n<ul>\n<li>Turb\u016bt\u012bba katastrof\u0101s gad\u012bjum\u0101 ar av\u0101rijas p\u0101rsl\u0113g\u0161anu uz galveno mezglu.<\/li>\n<li>Shard\u0113\u0161ana Redis pus\u0113.<\/li>\n<li>Datu p\u0101rvieto\u0161ana starp mezgliem atom\u0101ri un bez d\u012bkst\u0101ves.<\/li>\n<li>Jaudu un slod\u017eu pievieno\u0161ana un p\u0101rdale bez d\u012bkst\u0101ves.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><\/p>\n<p><em>Es var\u0113tu secin\u0101t, ka, ja jums nav nepiecie\u0161ama augsta pieejam\u012bba, tad p\u0101rcel\u0161an\u0101s uz klasteri nav t\u0101 v\u0113rta, jo tas var b\u016bt sare\u017e\u0123\u012bts uzdevums. Ta\u010du, ja s\u0101kotn\u0113ji ir j\u0101izv\u0113las starp atsevi\u0161\u0137u versiju un klasteri, tad j\u0101dod priek\u0161roka klasterim, jo tas nav slikt\u0101ks un papildus no\u0146ems da\u013cu no jums p\u0101r\u0113jo galvass\u0101pju.<\/em><\/p>\n<p><\/p>\n<h1 id=\"podgotovka-k-pereezdu\">Sagatavo\u0161an\u0101s p\u0101rcel\u0161an\u0101s procesam<\/h1>\n<p><\/p>\n<p>S\u0101ksim ar pras\u012bb\u0101m p\u0101rcel\u0161an\u0101s procesam:<\/p>\n<p><\/p>\n<ul>\n<li>Tam j\u0101b\u016bt bez\u0161uvju. Piln\u012bga servisa p\u0101rtrauk\u0161ana uz 5 min\u016bt\u0113m mums nav pie\u0146emama.<\/li>\n<li>Tam j\u0101b\u016bt p\u0113c iesp\u0113jas dro\u0161\u0101kam un pak\u0101peniskam. M\u0113s v\u0113lamies saglab\u0101t kontroli p\u0101r situ\u0101ciju. M\u0113s nev\u0113lamies visu izlaist uzreiz un l\u016bgt, lai nodz\u0113\u0161am pogu.<\/li>\n<li>Minim\u0101lie datu zudumi p\u0101rcel\u0161an\u0101s laik\u0101. M\u0113s saprotam, ka p\u0101rcelt atom\u0101ri b\u016bs \u013coti sare\u017e\u0123\u012bti, t\u0101p\u0113c pie\u0146emam zin\u0101mu datu nesakrit\u012bbu starp parasto un klastera Redis.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"obsluzhivanie-klastera\">Klastera apkope<\/h1>\n<p><\/p>\n<p>Pirms p\u0101rcel\u0161an\u0101s ir j\u0101dom\u0101 par to, vai m\u0113s sp\u0113j\u0101m atbalst\u012bt klasteri:<\/p>\n<p><\/p>\n<ul>\n<li>Grafiki. M\u0113s izmantojam Prometheus un Grafana, lai sekotu CPU slodzes, aiz\u0146emt\u0101s atmi\u0146as, klientu skaita, GET, SET, AUTH oper\u0101ciju skaita utt. grafikiem.<\/li>\n<li>Ekspert\u012bze. Iedom\u0101jieties, ka r\u012bt j\u016bsu atbild\u012bb\u0101 b\u016bs liels klasteris. Ja tas saboj\u0101sies, neviens, iz\u0146emot j\u016bs, to nevar\u0113s salabot. Ja tas s\u0101k pal\u0113nin\u0101ties, visi skries pie jums. Ja b\u016bs nepiecie\u0161ams pievienot resursus vai p\u0101rk\u0101rtot slodzi, atkal pie jums. Lai neb\u016btu balti mati 25 gadu vecum\u0101, v\u0113lams iepriek\u0161 apsv\u0113rt \u0161os gad\u012bjumus un p\u0101rbaud\u012bt, k\u0101 tehnolo\u0123ija uzved\u012bsies da\u017e\u0101du darb\u012bbu laik\u0101. Par to run\u0101sim s\u012bk\u0101k sada\u013c\u0101 \u201cEkspert\u012bze\u201d.<\/li>\n<li>Uzraudz\u012bbas un br\u012bdin\u0101jumi. Kad klasteris saboj\u0101jas, par to gribas uzzin\u0101t pirmajam. M\u0113s esam ierobe\u017eoju\u0161ies ar br\u012bdin\u0101jumu par to, ka visas mezgla atgrie\u017e vien\u0101du inform\u0101ciju par klastera st\u0101vokli (j\u0101, tas notiek ar\u012b cit\u0101d\u0101k). P\u0101r\u0113j\u0101s probl\u0113mas \u0101tr\u0101k paman\u012bt, p\u0113c Redis klientu pakalpojumu br\u012bdin\u0101jumiem.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"pereezd\">P\u0101rcel\u0161an\u0101s<\/h1>\n<p><\/p>\n<p>K\u0101 m\u0113s pl\u0101nosim p\u0101rcelties:<\/p>\n<p><\/p>\n<ul>\n<li>Pirmk\u0101rt, ir j\u0101prepar\u0113 bibliot\u0113ka, lai str\u0101d\u0101tu ar klasteri. Par pamatu G\u043e versijai m\u0113s izmantoj\u0101m go-redis un nedaudz piel\u0101goj\u0101m to sav\u0101m vajadz\u012bb\u0101m. Realiz\u0113j\u0101m Multi-metodes caur pipeline un nedaudz uzlaboj\u0101m piepras\u012bjumu atk\u0101rto\u0161anas noteikumus. Ar PHP versiju rad\u0101s vair\u0101k probl\u0113mu, bet galu gal\u0101 m\u0113s apstop\u0113j\u0101mies pie php-redis. Nesen vi\u0146i ieviesa klastera atbalstu, un m\u016bsupr\u0101t, tas izskat\u0101s labi.<\/li>\n<li>T\u0101l\u0101k ir j\u0101uzst\u0101da pats klasteris. To izdar\u012bt var burtiski div\u0101s komand\u0101s, pamatojoties uz konfigur\u0101cijas failu. Detaliz\u0113t\u0101k par iestat\u012bjumiem run\u0101sim turpm\u0101k.<\/li>\n<li>Pak\u0101peniskai p\u0101rejai m\u0113s izmantojam dry-mode. T\u0101 k\u0101 mums ir divas bibliot\u0113ku versijas ar identisku saskarni (viena parastajai versijai, otra klasterim), nav gr\u016bti izveidot apvalku, kas darbosies ar atsevi\u0161\u0137u versiju un paral\u0113li dubl\u0113s visus piepras\u012bjumus klaster\u012b, sal\u012bdzin\u0101s atbildes un rakst\u012bs at\u0161\u0137ir\u012bbas \u017eurn\u0101los (m\u016bsu gad\u012bjum\u0101 NewRelic). T\u0101d\u0113j\u0101di, pat ja klastera versija p\u0101rtrauktu darboties dispe\u010dera laik\u0101, m\u016bsu ra\u017eo\u0161anas vide netiks ietekm\u0113ta. <\/li>\n<li>Izveidojot klasteri dry-mod\u0113, m\u0113s varam mier\u012bgi sekot l\u012bdzi atbil\u017eu at\u0161\u0137ir\u012bbu grafikam. Ja k\u013c\u016bdu da\u013ca l\u0113n\u0101m, bet noteikti tuvojas k\u0101dai mazai konstantai, tas noz\u012bm\u0113, ka viss ir labi. K\u0101p\u0113c tom\u0113r ir at\u0161\u0137ir\u012bbas? Jo ieraksts atsevi\u0161\u0137\u0101 versij\u0101 notiek nedaudz agr\u0101k nek\u0101 klaster\u012b, un mikrolaika d\u0113\u013c dati var at\u0161\u0137irties. Atliek tikai apskat\u012bt at\u0161\u0137ir\u012bbu \u017eurn\u0101lus, un, ja visas t\u0101s ir izskaidrojamas ar neatomarit\u0101ti ierakst\u0101, tad var doties t\u0101l\u0101k.<\/li>\n<li>Tagad var p\u0101rv\u0113rst dry-mode pret\u0113j\u0101 virzien\u0101. Rakst\u012bsim un las\u012bsim no klastera, bet dubl\u0113sim atsevi\u0161\u0137\u0101 versij\u0101. K\u0101p\u0113c? N\u0101kamo ned\u0113\u013cu v\u0113los nov\u0113rot klastera darb\u012bbu. Ja p\u0113k\u0161\u0146i izr\u0101d\u012bsies, ka slodzes maksimum\u0101 ir probl\u0113mas vai m\u0113s kaut ko neesam iek\u013c\u0101vu\u0161i, mums vienm\u0113r b\u016bs iesp\u0113ja veikt \u0101rk\u0101rtas atgrie\u0161anos pie vec\u0101 koda un aktu\u0101lajiem datiem, pateicoties dry-mode.<\/li>\n<li>Atliek atsl\u0113gt dry-mode un demont\u0113t atsevi\u0161\u0137o versiju. <\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"ekspertiza\">Ekspert\u012bze<\/h1>\n<p><\/p>\n<p>Vispirms \u012bsi par klastera uzb\u016bvi.<\/p>\n<p><\/p>\n<p>Pirmk\u0101rt, Redis ir key-value kr\u0101tuve. K\u0101 atsl\u0113ga tiek izmantotas patva\u013c\u012bgas virknes. K\u0101 v\u0113rt\u012bbas var tikt izmantoti skait\u013ci, virknes un veselas strukt\u016bras. To ir \u013coti daudz, bet m\u016bsu kop\u012bg\u0101s uzb\u016bves izpratnei tas nav svar\u012bgi.<br \/>\nN\u0101kamais abstrakcijas l\u012bmenis p\u0113c atsl\u0113g\u0101m ir sloti (SLOTS). Katram atsl\u0113gam pieder viens no 16 383 slotiem. Katr\u0101 slot\u0101 var b\u016bt neierobe\u017eots atsl\u0113gu skaits. T\u0101d\u0113j\u0101di visas atsl\u0113gas tiek sadal\u012btas 16 383 nep\u0101rkl\u0101jo\u0161os kopumos.<br \/>\n<img decoding=\"async\" alt=\"Par p\u0101reju no Redis uz Redis-cluster\" src=\"\/wp-content\/uploads\/2020\/08\/a5e4be23381b42287f693e01d5d59a99.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T\u0101l\u0101k, klaster\u012b j\u0101b\u016bt N meistarnod\u0113m. Katru nodu var uzskat\u012bt par atsevi\u0161\u0137u Redis instanci, kas zina visu par cit\u0101m nod\u0113m iek\u0161 klastera. Katra meistarnode satur noteiktu skaitu slotu. Katrs slots pieder tikai vienai meistarnodei. Visus slotus j\u0101distrib\u016b\u0113 starp nod\u0113m. Ja da\u017ei sloti nav sadal\u012bti, tad tajos eso\u0161\u0101s atsl\u0113gas b\u016bs nepieejamas. Katru meistarnodi ir j\u0113ga palaist uz atsevi\u0161\u0137as lo\u0123iskas vai fiziskas ma\u0161\u012bnas. T\u0101pat v\u0113rts atcer\u0113ties, ka katra node darbojas tikai uz viena kodola, un, ja v\u0113laties uz vienas lo\u0123isk\u0101s ma\u0161\u012bnas palaist vair\u0101kus Redis instancus, p\u0101rliecinieties, ka tie darbojas uz at\u0161\u0137ir\u012bgiem kodoliem (m\u0113s to neesam m\u0113\u0123in\u0101ju\u0161i, bet teor\u0113tiski viss b\u016btu j\u0101darbojas). Pamat\u0101 meistarnodes nodro\u0161ina parasto \u0161ard\u0113\u0161anu, un liel\u0101ks meistarnodu skaits \u013cauj skalot rakst\u012b\u0161anas un las\u012b\u0161anas piepras\u012bjumus.<\/p>\n<p><\/p>\n<p>P\u0113c tam, kad visas atsl\u0113gas ir sadal\u012btas pa slotiem, un sloti ir izkais\u012bti pa meistarnod\u0113m, katrai meistarnodei var pievienot neierobe\u017eotu skaitu slie\u017eu nod\u0113m. Katr\u0101 \u0161\u0101d\u0101 \"meistara-slie\u017ea\" saist\u0113 darbosies parasta replik\u0101cija. Sliegi ir nepiecie\u0161ami, lai skalotu las\u012b\u0161anas piepras\u012bjumus un av\u0101rijas p\u0101rsl\u0113g\u0161anai gad\u012bjum\u0101, ja meistars iziet no ierindas.<br \/>\n<img decoding=\"async\" alt=\"Par p\u0101reju no Redis uz Redis-cluster\" src=\"\/wp-content\/uploads\/2020\/08\/90feb7ef9dacb858d5f21edc214df14d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tagad run\u0101sim par oper\u0101cij\u0101m, kuras b\u016btu labi prat\u012bt izpild\u012bt.<\/p>\n<p><\/p>\n<p>Pieeju sist\u0113mai m\u0113s veiksim caur Redis-CLI. T\u0101 k\u0101 Redis nav vienota ieejas punkta, sekojo\u0161\u0101s oper\u0101cijas var veikt uz jebkuras no nod\u0113m. Katrs punkts \u012bpa\u0161i uzsver iesp\u0113ju veikt oper\u0101ciju slodzes apst\u0101k\u013cos.<\/p>\n<p><\/p>\n<ul>\n<li>Pirmais un pats svar\u012bg\u0101kais, kas mums nepiecie\u0161ams: oper\u0101cija cluster nodes. T\u0101 atgrie\u017e klastera st\u0101vokli, par\u0101da nodu sarakstu, to lomas, slotu sadal\u012bjumu utt. Papildu inform\u0101ciju var ieg\u016bt, izmantojot cluster info un cluster slots.<\/li>\n<li>B\u016btu labi sp\u0113t pievienot un dz\u0113st mezglus. Tam ir oper\u0101cijas cluster meet un cluster forget. \u0145emiet v\u0113r\u0101, ka cluster forget ir j\u0101piem\u0113ro KATRAM mezglam, gan meistariem, gan replik\u0101m. Bet cluster meet ir pietiekami izsaukt tikai vien\u0101 mezgl\u0101. \u0160\u0101da at\u0161\u0137ir\u012bba var b\u016bt mulsino\u0161a, t\u0101d\u0113\u013c lab\u0101k par to uzzin\u0101t pirms klastera palai\u0161anas ekspluat\u0101cij\u0101. Jauna mezgla pievieno\u0161ana dro\u0161i veicama re\u0101laj\u0101 vid\u0113 un nek\u0101d\u0101 veid\u0101 neietekm\u0113 klastera darb\u012bbu (kas ir lo\u0123iski). Ja pl\u0101nojat dz\u0113st mezglu no klastera, tad j\u0101p\u0101rliecin\u0101s, ka taj\u0101 nav paliku\u0161i sloti (pret\u0113j\u0101 gad\u012bjum\u0101 risk\u0113jat zaud\u0113t piek\u013cuvi visiem atsl\u0113g\u0101m \u0161aj\u0101 mezgl\u0101). Ar\u012b nedz\u0113siet meistaru, kam ir vergi, cit\u0101di notiks nevajadz\u012bga balso\u0161ana par jauno meistaru. Ja mezglos vairs nav slotu, tas ir neliels probl\u0113mu, bet k\u0101p\u0113c mums lieki izv\u0113les, ja vispirms var dz\u0113st vergiem.<\/li>\n<li>Ja nepiecie\u0161ams piespiedu k\u0101rt\u0101 nomain\u012bt meistaru un vergu, tad der\u0113s komanda cluster failover. Izsaucot to re\u0101laj\u0101 vid\u0113, j\u0101apzin\u0101s, ka oper\u0101cijas izpildes laik\u0101 meistars b\u016bs nepieejams. Parasti p\u0101rsl\u0113g\u0161ana notiek maz\u0101k nek\u0101 sekundes laik\u0101, ta\u010du tas nav atom\u0101rs. Varat r\u0113\u0137in\u0101ties, ka da\u013ca piepras\u012bjumu meistaram \u0161aj\u0101 laik\u0101 beigsies ar k\u013c\u016bdu.<\/li>\n<li>Pirms mezgla no\u0146em\u0161anas no kopas, tam nedr\u012bkst b\u016bt nek\u0101du slotu. Tos vislab\u0101k p\u0101rdal\u012bt, izmantojot komandu cluster reshard. Slotus p\u0101rs\u016bt\u012bs no viena meistara uz citu. Visa oper\u0101cija var aiz\u0146emt da\u017eas min\u016btes, atkar\u012bb\u0101 no p\u0101rs\u016bt\u0101mo datu apjoma, tom\u0113r p\u0101rs\u016bt\u012b\u0161anas process ir dro\u0161s un nek\u0101d\u0101 veid\u0101 neietekm\u0113 kopas darbu. T\u0101d\u0113j\u0101di visus datus var p\u0101rs\u016bt\u012bt no viena mezgla uz citu tie\u0161i slodzes laik\u0101, ner\u016bp\u0113joties par to pieejam\u012bbu. Tom\u0113r ir ar\u012b nianses. Pirmk\u0101rt, datu p\u0101rs\u016bt\u012b\u0161ana ir saist\u012bta ar noteiktu slodzi gan pie\u0146\u0113m\u0113ja, gan s\u016bt\u012bt\u0101ja mezglam. Ja pie\u0146\u0113m\u0113jas mezgls jau ir \u013coti noslogots ar procesoru, tad nevajadz\u0113tu to v\u0113l vair\u0101k noslogot ar jaunu datu pie\u0146em\u0161anu. Otrk\u0101rt, tikl\u012bdz s\u016bt\u012bt\u0101ja meistaram vairs neb\u016bs neviena slota, visi vi\u0146a vergi nekav\u0113joties p\u0101riet pie meistara, uz kuru \u0161ie sloti tika p\u0101rcelti. Un probl\u0113ma ir t\u0101, ka visi \u0161ie vergi taj\u0101 pa\u0161\u0101 laik\u0101 v\u0113l\u0113sies sinhroniz\u0113t datus. Un jums v\u0113l paveiksies, ja t\u0101 b\u016bs da\u013c\u0113ja, nevis piln\u012bga sinhroniz\u0101cija. \u0145emiet to v\u0113r\u0101 un kombin\u0113jiet slotu p\u0101rvieto\u0161anas un vergu atsl\u0113g\u0161anas\/p\u0101rvieto\u0161anas oper\u0101cijas. Vai ar\u012b ceriet, ka jums ir pietiekama iztur\u012bba.<\/li>\n<li>Ko dar\u012bt, ja p\u0101rs\u016bt\u012b\u0161anas laik\u0101 j\u016bs atkl\u0101jat, ka kaut kur esat pazaud\u0113ju\u0161i slotus? Ceru, ka \u0161\u012b probl\u0113ma j\u016bs neskar, bet, ja kas, ir oper\u0101cija cluster fix. T\u0101 kaut k\u0101 izkais\u012bs slotus pa mezgliem gad\u012bjuma k\u0101rt\u012bb\u0101. Ieteiktu p\u0101rbaud\u012bt t\u0101s darb\u012bbu, iepriek\u0161 izdz\u0113\u0161ot no kopas mezglu ar sadal\u012btiem slotiem. T\u0101 k\u0101 dati neizsadal\u012btajos slotos t\u0101pat nav pieejami, par probl\u0113m\u0101m ar \u0161o slotu pieejam\u012bbu jau ir par v\u0113lu uztraukties. Savuk\u0101rt, sadal\u012btiem slotiem oper\u0101cija neietekm\u0113s.<\/li>\n<li>V\u0113l viena noder\u012bga oper\u0101cija ir monitor. T\u0101 \u013cauj re\u0101l\u0101 laik\u0101 redz\u0113t visu piepras\u012bjumu sarakstu, kas tiek s\u016bt\u012bti uz mezglu. V\u0113l vair\u0101k, to var izmantot ar grep, lai noskaidrotu, vai ir nepiecie\u0161amais trafiks.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ir v\u0113rts piemin\u0113t ar\u012b av\u0101rijas p\u0101rsl\u0113g\u0161anas proced\u016bru. Ja \u012bsi, t\u0101 ir un, manupr\u0101t, darbojas lieliski. Tom\u0113r nevajadz\u0113tu dom\u0101t, ka, izvilkot vadu no kontaktligzdas ma\u0161\u012bnai ar galveno mezglu, Redis nekav\u0113joties p\u0101rsl\u0113gsies un klienti nepaman\u012bs zaud\u0113jumu. Man\u0101 pieredz\u0113 p\u0101rsl\u0113g\u0161ana notiek vair\u0101kas sekundes. \u0160aj\u0101 laik\u0101 da\u013ca datu b\u016bs nepieejama: tiek konstat\u0113ta galven\u0101 mezgla nepieejam\u012bba, mezgli balsos par jauno, slaves p\u0101rsl\u0113dz\u0101s, dati sinhroniz\u0113jas. Lab\u0101kais veids, k\u0101 p\u0101rliecin\u0101ties, ka sh\u0113ma str\u0101d\u0101, ir veikt lok\u0101las m\u0101c\u012bbas. Uzst\u0101diet klasteri sav\u0101 kl\u0113pjdator\u0101, nodro\u0161iniet minim\u0101lu slodzi, simul\u0113jiet kritienu (piem\u0113ram, blo\u0137\u0113jot portus), nov\u0113rt\u0113jiet p\u0101rsl\u0113g\u0161anas \u0101trumu. Man\u0101 skat\u012bjum\u0101, tikai sp\u0113l\u0113joties \u0161\u0101d\u0101 veid\u0101 divas dienas, var b\u016bt dro\u0161i par tehnolo\u0123ijas darb\u012bbu. Vai nu cer\u0113t, ka programmat\u016bra, ko lieto puse interneta, noteikti darbojas.<\/p>\n<p><\/p>\n<h1 id=\"konfiguraciya\">Konfigur\u0101cija<\/h1>\n<p><\/p>\n<p>Bie\u017ei vien konfigur\u0101cija ir pirmais, kas nepiecie\u0161ams, lai uzs\u0101ktu darbu ar r\u012bku. Un, kad viss ir s\u0101cis darboties, nev\u0113lamies pieskarties konfigur\u0101cijai. Nepiecie\u0161ams noteikts p\u016bles, lai piespiestu sevi atgriezties pie iestat\u012bjumiem un r\u016bp\u012bgi tos p\u0101rskat\u012bt. Man\u0101 atmi\u0146\u0101 ir biju\u0161i vismaz divi nopietni izg\u0101\u0161an\u0101s gad\u012bjumi, jo neesam piev\u0113rsu\u0161i uzman\u012bbu konfigur\u0101cijai. L\u016bdzu, piev\u0113rsiet \u012bpa\u0161u uzman\u012bbu \u0161\u0101diem punktiem:<\/p>\n<p><\/p>\n<ul>\n<li>timeout 0<br \/>\n<em>Laiks, p\u0113c kura tiek sl\u0113gti neakt\u012bvie savienojumi (sekund\u0113s). 0 \u2014 nesl\u0113dzas<\/em><br \/>\nNe katra m\u016bsu bibliot\u0113ka prata pareizi sl\u0113gt savienojumus. Atsp\u0113jojot \u0161o iestat\u012bjumu, m\u0113s risk\u0113jam saskarties ar klientu skaita ierobe\u017eojumiem. No otras puses, ja t\u0101da probl\u0113ma past\u0101v, autom\u0101tisk\u0101 zaud\u0113to savienojumu p\u0101rtrauk\u0161ana to maske, un m\u0113s to varam nepaman\u012bt. Turkl\u0101t \u0161o iestat\u012bjumu nevajadz\u0113tu iesl\u0113gt, izmantojot persist-savienojumus.<\/li>\n<li>Save x y &amp; appendonly yes<br \/>\n<em>RDB momentuz\u0146\u0113muma saglab\u0101\u0161ana.<\/em><br \/>\nRDB\/AOF probl\u0113mas m\u0113s s\u012bki apspried\u012bsim turpm\u0101k.<\/li>\n<li>stop-writes-on-bgsave-error no &amp; slave-serve-stale-data yes<br \/>\n<em>Ja ir iesl\u0113gts, tad RDB momentuz\u0146\u0113muma saboj\u0101\u0161an\u0101s gad\u012bjum\u0101 galvenais mezgls p\u0101rtrauks pie\u0146emt izmai\u0146u piepras\u012bjumus. Ja savienojums ar galveno mezglu ir zudis, tad slaves var turpin\u0101t atbild\u0113t uz piepras\u012bjumiem (j\u0101). Vai ar\u012b p\u0101rtrauks atbild\u0113t (n\u0113)<\/em><br \/>\nM\u016bs neapmierina situ\u0101cija, kad Redis p\u0101rv\u0113r\u0161as par \u0137irbi.<\/li>\n<li>repl-ping-slave-period 5<br \/>\n<em>P\u0113c \u0161\u012b laika interv\u0101la m\u0113s s\u0101ksim uztraukties, ka meistars ir nepareizi noregul\u0113ts un ir pien\u0101cis laiks veikt failover proced\u016bru.<\/em><br \/>\nB\u016bs j\u0101mekl\u0113 l\u012bdzsvars starp viltus trauksmes un failover uzs\u0101k\u0161anu manu\u0101li. M\u016bsu praks\u0113 uz to parasti tiek t\u0113r\u0113tas 5 sekundes.<\/li>\n<li>repl-backlog-size 1024mb &amp; epl-backlog-ttl 0<br \/>\n<em>Tie\u0161i tik daudz datu m\u0113s varam glab\u0101t bufer\u012b neakt\u012bvai replikai. Ja buferis izbeidzas, b\u016bs j\u0101saska\u0146o piln\u012bgi no jauna.<\/em><br \/>\nPrakse nor\u0101da, ka lab\u0101k uzst\u0101d\u012bt liel\u0101ku v\u0113rt\u012bbu. Iemeslu, k\u0101p\u0113c replika var s\u0101kt kav\u0113ties, nav maz. Ja t\u0101 s\u0101k atpalikt, past\u0101v liela iesp\u0113jam\u012bba, ka j\u016bsu meistars jau gr\u016bti tiek gal\u0101, un pilna sinhroniz\u0101cija b\u016bs p\u0113d\u0113jais piliens.<\/li>\n<li>maxclients 10000<br \/>\n<em>Maksim\u0101lais vienlaic\u012bgo klientu skaits.<\/em><br \/>\nNo m\u016bsu pieredzes lab\u0101k uzst\u0101d\u012bt liel\u0101ku v\u0113rt\u012bbu. Redis lieliski tiek gal\u0101 ar 10 t\u016bksto\u0161iem savienojumu. Tikai p\u0101rliecinieties, ka sist\u0113m\u0101 ir pietiekami daudz soketu. <\/li>\n<li>maxmemory-policy volatile-ttl<br \/>\n<em>Noteikums, saska\u0146\u0101 ar kuru tiek dz\u0113sti atsl\u0113gas, sasniedzot pieejam\u0101s atmi\u0146as limitu.<\/em><br \/>\n\u0160eit svar\u012bgs ir nevis pats noteikums, bet gan izpratne par to, k\u0101 tas notiks. Redis var uzslav\u0113t par sp\u0113ju norm\u0101li darboties, sasniedzot atmi\u0146as limitu. <\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"problemy-rdb-i-aof\">RDB un AOF probl\u0113mas<\/h1>\n<p><\/p>\n<p>Lai gan pats Redis glab\u0101 visus datus operat\u012bvaj\u0101 atmi\u0146\u0101, past\u0101v ar\u012b meh\u0101nisms datu saglab\u0101\u0161anai disk\u0101. Faktiski ir tr\u012bs meh\u0101nismi:<\/p>\n<p><\/p>\n<ul>\n<li>RDB-snapshot \u2014 piln\u012bgs visu datu att\u0113ls. To iestata, izmantojot konfigur\u0101ciju SAVE X Y, un tas tiek las\u012bts k\u0101 \"Saglab\u0101t piln\u012bgu visu datu att\u0113lu katras X sekundes, ja vismaz Y atsl\u0113gas ir main\u012bju\u0161\u0101s.\"<\/li>\n<li>Append-only fail\u0101 ir darb\u012bbu saraksts to izpildes sec\u012bb\u0101. Tas pievieno jaunus ien\u0101ko\u0161os darb\u012bbu datus failam katras X sekundes vai p\u0113c Y darb\u012bb\u0101m.<\/li>\n<li>RDB un AOF \u2014 iepriek\u0161\u0113jo divu kombin\u0101cija.<\/li>\n<\/ul>\n<p><\/p>\n<p>Visiem pa\u0146\u0113mieniem ir savi plusi un m\u012bnusi, es nemin\u0113\u0161u tos visus, tikai piev\u0113rs\u012b\u0161u uzman\u012bbu man\u0101 skat\u012bjum\u0101 ne ac\u012bmredzam\u0101m liet\u0101m.<\/p>\n<p><\/p>\n<p>Vispirms RDB att\u0113la saglab\u0101\u0161anai ir nepiecie\u0161ams izsaukt FORK. Ja datu ir daudz, tas var pak\u0101rt visu Redis no da\u017e\u0101m milisekund\u0113m l\u012bdz sekund\u0113m. Turkl\u0101t sist\u0113mai ir nepiecie\u0161ams pie\u0161\u0137irt atmi\u0146u \u0161\u0101dam att\u0113lam, kas noz\u012bm\u0113, ka ir j\u0101nodro\u0161ina dubult\u0101 operat\u012bv\u0101s atmi\u0146as rezerves: ja Redis ir pie\u0161\u0137irti 8 GB, tad virtu\u0101lajai ma\u0161\u012bnai ar to j\u0101b\u016bt pieejamiem 16.<\/p>\n<p><\/p>\n<p>Otrk\u0101rt, past\u0101v probl\u0113mas ar da\u013c\u0113ju sinhroniz\u0101ciju. AOF re\u017e\u012bm\u0101, atk\u0101rtoti piesl\u0113dzoties slavei, var izpild\u012bties piln\u012bga sinhroniz\u0101cija. Neizdev\u0101s saprast, k\u0101p\u0113c t\u0101 notiek. Bet par to ir j\u0101atceras.<\/p>\n<p><\/p>\n<p>\u0160ie divi punkti jau liek dom\u0101t, cik \u013coti mums nepiecie\u0161ami \u0161ie dati disk\u0101, ja tie t\u0101pat jau tiek dubl\u0113ti slavos. Datus var pazaud\u0113t tikai tad, ja visi slavi izg\u0101\u017eas, un tas ir probl\u0113mas l\u012bmen\u012b 'ugunsgr\u0113ks datu centr\u0101'. Kompromisa risin\u0101jum\u0101 var\u0113tu pied\u0101v\u0101t saglab\u0101t datus tikai slav\u0101s, bet \u0161aj\u0101 gad\u012bjum\u0101 ir j\u0101p\u0101rliecin\u0101s, ka \u0161ie slavi nekad nek\u013c\u016bst par meistaru av\u0101rijas atjauno\u0161anai (tam ir iestat\u012bjums slavu priorit\u0101tei to konfigur\u0101cij\u0101). M\u0113s katr\u0101 konkr\u0113taj\u0101 gad\u012bjum\u0101 dom\u0101jam, vai ir nepiecie\u0161ams saglab\u0101t datus disk\u0101, un visbie\u017e\u0101k atbildam 'n\u0113'.<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Secin\u0101jums<\/h1>\n<p><\/p>\n<p>Nosl\u0113gum\u0101 ceru, ka esmu devis visp\u0101r\u0113ju priek\u0161statu par redis-cluster darb\u012bbu tiem, kas par to piln\u012bgi neko nav dzird\u0113ju\u0161i, k\u0101 ar\u012b nor\u0101d\u012bjis uz k\u0101d\u0101m ac\u012bmredzam\u0101m nians\u0113m tiem, kas jau sen to izmanto.<br \/>\nPaldies par velt\u012bto laiku, un k\u0101 parasti, koment\u0101ri par t\u0113mu ir laipni gaid\u012bti.<\/p>\n<p>Avots: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/citymobil\/blog\/515620\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0445\u043e\u0434\u044f \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0435\u0441\u044f\u0442\u043a\u0430 \u043b\u0435\u0442, \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043d\u0435 \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0442\u0438\u0442\u044c \u0432 \u043d\u0435\u043c \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438. \u041d\u043e \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u043b\u0433\u043e\u0434\u0430 \u0432\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u0432 10 \u0440\u0430\u0437 \u0432\u044b\u0448\u0435, \u0430 \u0446\u0435\u043d\u0430 \u043f\u0430\u0434\u0435\u043d\u0438\u0439 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u0441\u044f \u0432 \u0441\u043e\u0442\u043d\u0438 \u0440\u0430\u0437? \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043a\u0440\u0443\u0442\u043e\u0439 Highload Engineer. \u041d\u043e \u0437\u0430 \u043d\u0435\u0438\u043c\u0435\u043d\u0438\u0435\u043c \u0433\u043e\u0440\u043d\u0438\u0447\u043d\u043e\u0439 \u0442\u0430\u043a\u043e\u0432\u043e\u0433\u043e, \u0440\u0435\u0448\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0434\u043e\u0432\u0435\u0440\u0438\u043b\u0438 \u043c\u043d\u0435. \u0412 \u043f\u0435\u0440\u0432\u043e\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":91847,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-91846","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0445\u043e\u0434\u044f \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/o-pereezde-s-redis-na-redis-cluster\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"lv_LV\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041e \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0435 \u0441 Redis \u043d\u0430 Redis-cluster | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0445\u043e\u0434\u044f \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/o-pereezde-s-redis-na-redis-cluster\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-19T17:41:57+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-19T17:41:57+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Par p\u0101reju no Redis uz Redis-cluster | ProHoster","description":"N\u0101kot produkt\u0101, kas att\u012bst\u0101s vair\u0101k.","canonical_url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/o-pereezde-s-redis-na-redis-cluster","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"lv_LV","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041e \u043f\u0435\u0440\u0435\u0435\u0437\u0434\u0435 \u0441 Redis \u043d\u0430 Redis-cluster | ProHoster","og:description":"\u041f\u0440\u0438\u0445\u043e\u0434\u044f \u0432 \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435.","og:url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/o-pereezde-s-redis-na-redis-cluster","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-19T17:41:57+00:00","article:modified_time":"2020-08-19T17:41:57+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"91846","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:19:41","updated":"2022-10-03 14:54:15","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/91846","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=91846"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/91846\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media\/91847"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=91846"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=91846"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=91846"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}