Quful la qaybiyey iyadoo la isticmaalayo Redis

Haye Habr!

Maanta waxaan kuu soo jeedineynaa dareenkaaga tarjumaad maqaal adag oo ku saabsan hirgelinta qufulka la qaybiyey iyadoo la adeegsanayo Redis waxaanan kugu martiqaadeynaa inaad ka hadasho rajada Redis mawduuc ahaan. Falanqaynta algorithm-ka Redlock ee su'aasha laga keenay Martin Kleppmann, qoraaga buugga "Codsiyada Xamuulka Sare", la siiyay halkan.

Qufulka la qaybiyey waa horudhac aad u faa'iido badan oo laga isticmaalo deegaanno badan halkaas oo habab kala duwani ay tahay in ay uga shaqeeyaan kheyraadka la wadaago si labada dhinacba gooni u ahaadaan.

Waxaa jira tiro maktabado ah iyo qoraalo ka baxsan halkaas oo qeexaya sida loo hirgeliyo DLM (Maareeyaha Qufulka loo qaybiyay) iyadoo la adeegsanayo Redis, laakiin maktabad kasta waxay qaadataa hab ka duwan oo dammaanadaha ay bixiyaan ayaa ah kuwo daciif ah marka la barbar dhigo waxa la heli karo oo leh naqshad yar oo casri ah.

Maqaalkan waxaan isku dayi doonaa inaan sharaxno algorithm shuruudaysan oo muujinaya sida loo hirgeliyo quful qaybsan iyadoo la adeegsanayo Redis. Waxaan ka hadli doonaa algorithm la yiraahdo Redlock, waxay fulisaa maamulaha qufulka oo la qaybiyey, fikradayada, algorithmisku waa ka badbaado badan yahay habka caadiga ah ee hal-mar. Waxaan rajaynaynaa in bulshadu ay falanqayso, bixin doonto jawaab celin, oo ay u isticmaali doonto bar bilawga mashaariicda kakan ama ka duwan.

Hirgelinta

Kahor intaadan u gudbin sharaxaadda algorithm, waxaan bixinaa dhowr xiriiriye oo ku saabsan fulinta diyaarsan. Waxaa loo isticmaali karaa tixraac.

Dammaanadqaadyada Amniga iyo Helitaanka

Waxaan ku qaabayn doonaa naqshadeena saddex guri oo kaliya oo aanu u malaynayno inay bixinayaan dammaanadaha ugu yar ee loo baahan yahay si wax ku ool ah loo isticmaalo quful qaybsan.

  1. Hantida amniga: Ka saarida labada dhinac. Waqti kasta, hal macmiil kaliya ayaa hayn kara qufulka.
  2. Hantida Helitaanka A: Ma jiraan wax xidhidh. Had iyo jeer waa suurtagal in ugu dambeyntii la helo quful, xitaa haddii macmiilka quful kheyraadka uu ku guuldareysto ama uu ku dego qayb disk kale ah.
  3. Helitaanka Hantida B: Dulqaadka Ciladda. Ilaa inta inta badan Redis noodes ay socdaan, macaamiishu waxay awoodaan inay helaan oo ay sii daayaan qufullada.

Waa maxay sababta hirgelinta ku salaysan soo kabashada guul-darrooyinka kuma filna kiiskan
Si aan u fahamno waxa aan horumarin doonno, aan falanqeyno xaaladda hadda jirta iyada oo inta badan maktabadaha qufulka la qaybiyay oo ku saleysan Redis.

Habka ugu fudud ee lagu quful kheyraadka adoo isticmaalaya Redis waa in la abuuro fure tusaale ahaan. Caadi ahaan, furaha waxaa lagu abuuraa nolol xaddidan, tan waxaa lagu gaaraa iyadoo la adeegsanayo qaabka dhacayo ee lagu bixiyo Redis, si dhakhso ah ama ka dib furahaan waa la sii daayaa (hantida 2 ee liiskayaga). Marka macmiilku u baahdo inuu sii daayo kheyraadka, wuxuu tirtiraa furaha.

Jaleecada hore, xalkani si fiican ayuu u shaqeeyaa, laakiin waxaa jirta dhibaato: naqshadeenu waxay abuurtaa hal dhibic oo guul darro ah. Maxaa dhacaya haddii tusaale ahaan martigeliyaha Redis uu ku guuldareysto? Adoon ku darno markaa! Oo waanu isticmaali doonaa haddii soo-jeediyaha la waayo. Nasiib darro, doorashadani ma aha mid shaqayn karta. Marka aan tan samayno, ma awoodi doono inaan si sax ah u hirgelino hantida ka saarista labada dhinac ee aan u baahanahay si aan u sugno amniga, sababtoo ah ku celcelinta Redis waa isku mid.

Sida cad, qaabkan oo kale xaalad jinsiyadeed ayaa dhacda:

  1. Macmiil A waxa uu haystaa quful sayidkiisa.
  2. Sayidku wuu guuldarraystay ka hor inta aan furaha gelitaanka loo wareejin addoonka.
  3. raaca waxa loo dalacsiiyaa hogaamiye.
  4. Macmiil B waxa uu helayaa quful isla agabka A uu hore u xidhay. XADGUDUB AMNIGA!

Mararka qaarkood waa wax iska caadi ah in xaalado gaar ah, sida guuldarada, macaamiil badan ay isku mar qabsan karaan qufulka. Xaaladahan oo kale, xal ku-saleysan ku-noqosho ayaa la adeegsan karaa. Haddii kale, waxaan kugula talineynaa xalka lagu qeexay qodobkan.

Hirgelinta saxda ah hal tusaale

Ka hor inta aanad isku dayin inaad ka gudubto cilladaha qaabeynta hal tusaale ee kor lagu sharaxay, aynu fahamno sida saxda ah ee loo maareeyo kiiskan fudud, maadaama xalkani dhab ahaantii ansax yahay codsiyada halkaasoo xaalad jinsiyadeed la aqbali karo waqti ka waqti, iyo sidoo kale sababtoo ah xannibaadda on a hal tusaale waxa uu u adeegaa sida aasaaska loo isticmaalo algorithmamka la qaybiyey ee halkan lagu sharaxay.

Si aad u hesho quful, samee tan:

SET resource_name my_random_value NX PX 30000

Amarkani waxa uu rakibayaa furaha kaliya haddii aanu hore u jirin (ikhtiyaarka NX), oo leh muddo ansax ah oo ah 30000 millise seconds (doorashada PX). Furaha ayaa loo dejiyay "myrandomvalue" Qiimahani waa inuu noqdaa mid u gaar ah dhammaan macaamiisha iyo dhammaan codsiyada qufulka.
Asal ahaan, qiime random ah ayaa loo isticmaalaa in si badbaado leh loo sii daayo qufulka, oo leh qoraal u sheegaya Redis: kaliya ka saar furaha haddii uu jiro iyo qiimaha lagu kaydiyay waa dhab ahaan wixii la filayay. Tan waxaa lagu gaaraa iyadoo la adeegsanayo qoraalka Lua ee soo socda:

if redis.call("get",KEYS[1]) == ARGV[1] then
    return redis.call("del",KEYS[1])
else
    return 0
end

Tani waa muhiim si looga hortago in quful uu haysto macmiil kale laga saaro. Tusaale ahaan, macmiilku waxa laga yaabaa inuu helo quful, ka bacdina uu ku xidhnaado hawlo ka dheer qufulkii hore (si uu furuhu u helo wakhti uu ku dhaco), oo hadhow ka saaro qufulka uu macmiil kale dhigay.
Isticmaalka DEL fudud waa khatar sababtoo ah macmiilku wuxuu ka saari karaa quful uu haysto macmiil kale. Taas bedelkeeda, marka la isticmaalayo qoraalka sare, quful kasta waxaa lagu "saxiixday" xarig random ah, marka kaliya macmiilkii hore u dhigay ayaa ka saari kara.

Maxay noqonaysaa xadhigan random-ka? Waxaan qiyaasayaa inay tahay 20 bytes oo ka yimid /dev/urandom, laakiin waxaad heli kartaa habab ka jaban si aad xadhigga uga dhigto mid gaar ah oo ku filan ujeedooyinkaaga. Tusaale ahaan, way fiicnaan lahayd in RC4 lagu beero /dev/urandom ka dibna laga dhaliyo qulqulka random-ka been-abuurka ah. Xalka fudud ayaa ku lug leh isku-darka wakhtiga unix ee xallinta ilbiriqsiga iyo aqoonsiga macmiilka; ma aha mid ammaan ah, laakiin waxay u badan tahay inay ku xiran tahay hawsha xaaladaha badankooda.

Waqtiga aan u isticmaalno cabbirka nolosha furaha waxaa loo yaqaan "nolosha quful". Qiimahani waa inta ka hor inta aan qufulka si toos ah loo sii dayn iyo inta wakhtiga uu macmiilku ku qasban yahay in uu dhamaystiro hawlgalka ka hor inta aanu macmiil kale xidhin khayraadkaas, iyada oo aan dhab ahaantii jabin dammaanadda ka saarista labada dhinac. Dammaanaddani waxay ku kooban tahay oo keliya daaqad wakhti gaar ah, taas oo bilaabmaysa marka qufulka la iibsado.

Markaa waxaan ka wada hadalnay qaab wanaagsan oo loo helo oo loo sii daayo quful. Nidaamku (haddii aan ka hadlayno nidaam aan la qaybin oo ka kooban hal mar oo mar walba la heli karo) waa ammaan. Aynu ku fidinno fikraddan nidaam qaybsan, halkaas oo aan haysanin dammaanad caynkaas ah.

Redlock algorithm

Nooca la qaybiyay ee algorithm wuxuu u maleynayaa inaan leenahay N Redis masters. Noodhyadani gabi ahaanba way ka madax banaan yihiin midba midka kale, markaa ma isticmaalno ku celcelin ama nidaam kale oo isuduwidda dahsoon. Waxaan mar hore soo sheegnay sida loo helo oo loo sii daayo quful hal tusaale. Waxaan u qaadaneynaa si dhab ah in algorithm, marka la shaqeynayo hal tusaale, uu isticmaali doono habkan saxda ah. Tusaalooyinkayaga waxaan dhignay N ilaa 5, taas oo ah qiimo macquul ah. Markaa, waxaan u baahan doonaa inaan u isticmaalno 5 Redis masters kombiyuutaro kala duwan ama mashiinnada farsamada si aan u hubinno inay u dhaqmaan si ka madax bannaan midba midka kale.

Si loo helo quful, macmiilku waxa uu sameeyaa hawlaha soo socda:

  1. Wakhtiga hadda la joogo wuxuu ku helaa millise seconds.
  2. Si isdaba joog ah isku dayo in lagu helo quful dhammaan xaaladaha N, iyadoo la adeegsanayo isla magaca muhiimka ah iyo qiyamka random ee kiisaska oo dhan. Marxaladda 2, marka macmiilku u dejiyo quful ku salaysan xaalad kasta, macmiilku wuxuu isticmaalaa dib u dhac si uu u helo waqti gaaban oo ku filan marka la barbardhigo wakhtiga ka dib kaas oo qufulka si toos ah loo sii daayo. Tusaale ahaan, haddii muddada xannibaadda ay tahay 10 ilbiriqsi, daahitaanka wuxuu noqon karaa inta u dhaxaysa ~ 5-50 millise seconds. Tani waxay meesha ka saaraysaa xaalada uu macmiilku ku sii jiri karo xannibaad muddo dheer oo isku dayaya inuu gaaro marinka Redis node: haddii tusaale ahaan aan la heli karin, ka dib waxaan isku daynaa inaan ku xirno tusaale kale sida ugu dhakhsaha badan.
  3. Si aad u qaadato quful, macmiilku waxa uu xisaabiyaa inta wakhti ee soo dhaaftay; Si tan loo sameeyo, waxa ay ka jaraysaa qiimaha wakhtiga dhabta ah shaambada wakhtiga lagu helay tallaabada 1. Haddii iyo kaliya haddii macmiilku awoodo inuu helo qufulka inta badan kiisaska (ugu yaraan 3), iyo wadarta wakhtiga ay qaadatay Hel qufulka, in ka yar muddada qufulka, qufulka waxaa loo arkaa in la helay.
  4. Haddii quful la helay, muddada qufulka waxaa loo qaadanayaa inuu noqdo muddada qufulka asalka ah marka laga reebo wakhtiga ku dhaafay ee lagu xisaabiyay tallaabada 3.
  5. Haddii macmiilku ku guuldareysto inuu helo qufulka sabab qaar ka mid ah (ama waxay awoodi wayday inay xirto kiisaska N/2+1, ama mudada qufulku waa taban), markaas waxay isku dayi doontaa inay furto dhammaan kiisaska (xitaa kuwa ay u maleeyeen inaysan xannibi karin ).

Algorithm-ku ma isku mid ma yahay?

Algorithm-kani waxa uu ku salaysan yahay malo ah in, in kasta oo aanay jirin saacad la mid ah oo dhammaan hababka shaqayn lahaa, waqtiga maxaliga ah ee geedi socodka kasta ayaa weli ku qulqulaya qiyaastii isku xawli, iyo qaladku waa yar yahay marka la barbar dhigo wadarta wakhtiga ka dib kaas oo qufulku waa. si toos ah loo sii daayo. Malahani waxa uu aad ula mid yahay xaaladda caadiga ah ee kombiyuutarada caadiga ah: kumbiyuutar kastaa waxa uu leeyahay saacad maxalli ah, waxaana aynu inta badan ku xisaabtami karnaa in farqiga u dhexeeya kombiyuutarrada kala duwani uu yar yahay.

Halkaa marka ay marayso, waa in aan si taxadar leh u qaabaynnaa xeerkeena ka saarista labada dhinac: ka saarida labada dhinac waa la dammaanad qaaday kaliya haddii macmiilka haysta qufulka uu ka baxo inta lagu jiro wakhtiga qufulku uu ansax yahay (qiimahan laga helay tallaabada 3), laga jaray waqti dheeri ah (wadarta wadarta dhowr millise seconds si loo magdhabo farqiga u dhexeeya wakhtiga).

Maqaalka xiisaha leh ee soo socda ayaa wax badan ka sheegaya nidaamyada noocan oo kale ah ee u baahan isuduwidda waqtiyada: Heshiisyada: hab wax ku ool ah oo u dulqaadan cilada ee joogtaynta kaydinta faylka la qaybiyay.

Isku day fashilka

Marka macmiilku ku guuldareysto inuu helo quful, waa inuu isku dayaa mar labaad ka dib daahitaan aan toos ahayn; Tan waxa loo sameeyaa in la kala saaro macaamiil badan oo isku dayaya in ay helaan quful isla kheyraad isku mar ah (taas oo keeni karta xaalad "kala qaybsanaan" maskaxeed taas oo aysan jirin guuleyste). Intaa waxaa dheer, sida ugu dhakhsaha badan ee macmiilku isku dayo inuu helo quful inta badan kiisaska Redis, waa sii yaraanaya daaqadda taas oo xaalad maskaxeed oo kala qaybsan ay ku dhici karto (iyo baahida yar ee dib u celinta). Sidaa darteed, sida ugu habboon, macmiilku waa inuu isku dayo inuu u diro amarada SET xaaladaha N isla mar ahaantaana isagoo isticmaalaya isku-dhufashada.

Waxaa mudan in halkan xooga lagu saaro sida ay muhiim ugu tahay macaamiisha ku guul dareysata inay helaan inta badan qufulada inay sii daayaan qufulada ay heleen (qayb ahaan), si aysan u sugin inta uu furaha dhacayo ka hor inta aan mar kale la helin qufulka kheyraadka. (inkasta oo haddii kala qaybsanaanta shabakadu dhacdo, oo macmiilku lumiyo xidhiidhka kiisaska Redis, markaa waa inaad bixisaa ciqaabta helitaanka inta aad sugayso furaha inuu dhaco).

Fur qufulka

Sii daynta qufulku waa hawl fudud oo u baahan in la furo dhammaan xaaladaha, iyada oo aan loo eegin haddii macmiilku u muuqdo mid si guul leh u xidhay tusaale gaar ah.

Tixgelinta Amniga

Algorithm ma badbaado baa? Aan isku dayno inaan qiyaasno waxa dhacaya xaalado kala duwan.

Si aan ku bilowno, aan ka soo qaadno in macmiilku awooday inuu helo quful inta badan kiisaska. Tusaale kastaa waxa uu ka koobnaan doonaa fure leh isla cimriga dadka oo dhan. Si kastaba ha ahaatee, mid kasta oo ka mid ah furayaashan waxaa lagu rakibay waqti kala duwan, sidaas darteed waxay dhacayaan waqtiyo kala duwan. Laakiin, haddii furaha ugu horreeya lagu rakibay waqti aan ka xumaan T1 (waqtiga aan dooranay ka hor inta aan la xiriirin server-ka ugu horreeya), furaha ugu dambeeya waxaa lagu rakibay waqti aan ka xumaan T2 (waqtiga jawaabta la helay). laga soo bilaabo server-kii ugu dambeeyay), ka dib waxaan ku kalsoonahay in furaha ugu horreeya ee xirmada dhacaya uu noolaan doono ugu yaraan MIN_VALIDITY=TTL-(T2-T1)-CLOCK_DRIFT. Dhammaan furayaasha kale way dhacayaan hadhow, markaa waxaan hubin karnaa in dhammaan furayaasha ay isku mar shaqayn doonaan ugu yaraan wakhtigan.

Inta lagu jiro wakhtiga ay furayaasha badankoodu sii jiraan, macmiil kale ma awoodi doono inuu helo qufulka, maadaama N/2+1 SET NX aanay guulaysan karin haddii furayaasha N/2+1 ay hore u jireen. Sidaa darteed, mar haddii quful la helo, suurtogal maaha in mar kale la helo isla markiiba (tani waxay ku xad-gudbi doontaa hantida ka-saarista labada dhinac).
Si kastaba ha ahaatee, waxaan rabnaa inaan hubinno in macaamiil badan oo isku dayaya inay helaan quful isku mar ah aysan ku guuleysan karin isku mar.

Haddii macmiilku uu xidhay inta badan kiisaska ilaa ama in ka badan wakhtiga xidhitaanka, waxay u qaadan doontaa qufulka mid aan shaqaynayn oo furi doona kiisaska. Sidaa darteed, waa in aan xisaabta ku darnaa oo kaliya kiis uu macmiilku ku guuleystey inuu joojiyo inta badan kiisaska wakhti ka yar taariikhda dhicitaanka. Xaaladdan oo kale, oo ku saabsan doodda kor ku xusan, inta lagu jiro wakhtiga MIN_VALIDITY ma jiro qof macmiil ah oo awood u leh inuu dib u helo qufulka. Sidaa darteed, macaamiil badan ayaa awood u yeelan doona inay xiraan kiisaska N/2+1 isku mar (taas oo ku dhamaanaysa dhamaadka marxaladda 2) kaliya marka wakhtiga la xidho inta badan uu ka weyn yahay wakhtiga TTL, taas oo ka dhigaysa qufulka mid aan shaqaynayn.

Ma bixin kartaa caddayn rasmi ah oo amniga ah, ma muujin kartaa algorithms-yada la midka ah ee jira, ama ma ka heli kartaa cillad xagga sare?

Tixgelinta Helitaanka

Helitaanka nidaamku waxay ku xidhan tahay saddex sifo oo waaweyn:

  1. Si toos ah u sii daaya qufullada (sida furayaashu u dhacayaan): Furayaasha ayaa ugu dambayntii mar kale diyaar noqon doona si loogu isticmaalo qufullada.
  2. Xaqiiqda ah in macaamiishu ay inta badan is caawiyaan iyaga oo iska saaraya qufulka marka aan la helin qufulkii la rabay, ama la helay oo shaqada la dhammeeyey; marka waxay u badan tahay inaynaan sugin furayaasha inay dhacayaan si aan dib ugu helno qufulka.
  3. Xaqiiqda ah in marka macmiilku u baahan yahay inuu isku dayo inuu helo quful, waxay sugaysaa marka la barbar dhigo wakhti ka dheer muddada loo baahan yahay si loo helo qufulada intooda badan. Tani waxay yaraynaysaa suurtagalnimada in xaalad maskaxeed oo kala go'a ay soo baxdo marka loo tartamayo kheyraadka.

Si kastaba ha ahaatee, waxaa jira ganaax la heli karo oo la mid ah TTL ee qaybaha shabakada, markaa haddii ay jiraan qaybo isku xiran, ciqaabtu waxay noqon kartaa mid aan xad lahayn. Tani waxay dhacdaa mar kasta oo macmiilku helo quful ka dibna uu jeexjeexo qayb kale ka hor inta uusan sii deyn.

Mabda 'ahaan, la siiyay qaybo iskuxiran oo aan xadidnayn, nidaamku wuxuu ahaan karaa mid aan la heli karin muddo aan xadidnayn.

Waxqabadka, guuldarreysiga iyo fsync

Dad badan ayaa isticmaala Redis sababtoo ah waxay u baahan yihiin waxqabad sare oo server ah marka loo eego daahitaanka looga baahan yahay helitaanka iyo sii deynta qufullada, iyo tirada iibsiyada / sii daynta ee la dhammayn karo ilbiriqsi kasta. Si loo buuxiyo shuruudahan, waxaa jirta istaraatiijiyad lagula xiriirinayo server-yada N Redis si loo yareeyo daahitaanka. Tani waa istaraatiijiyad isku dhufasho ah (ama "isku-dhufashada miskiinka", halkaasoo godka la geliyo qaab aan xannibin, soo diro dhammaan amarrada, oo akhriya amarrada dambe, iyada oo loo maleynayo in wakhtiga safarka ee u dhexeeya macmiilka iyo tusaale kasta uu la mid yahay) .

Si kastaba ha ahaatee, waa inaan sidoo kale tixgelinno tixgelinta la xiriirta kaydinta xogta muddada-dheer haddii aan ku dadaalno inaan abuurno nooc leh dib u soo kabasho la isku halleyn karo oo ka yimaada guuldarrooyinka.

Asal ahaan, si loo caddeeyo arrinta, aan u qaadanno inaan ku habeynay Redis iyada oo aan lahayn kaydinta xogta muddada-dheer gabi ahaanba. Macmiilku wuxuu maamulaa inuu xannibo 3 ka mid ah 5 xaaladood. Mid ka mid ah xaaladaha uu macmiilku ku guulaystey inuu xannibo ayaa dib loo bilaabay, wakhtigan xaadirka ah waxaa jira 3 xaaladood oo la mid ah kheyraadkii la midka ahaa, kuwaas oo aan joojin karno, macmiil kale ayaa isna xannibi kara tusaale ahaan dib u bilaabay, ku xad-gudbay hantida amniga. u maleeyo ka-saarista qufulka.

Haddii aad awood u siiso xogta ka hor (AOF), xaaladdu wax yar ayay soo fiicnaan doontaa. Tusaale ahaan, waxaad kor u qaadi kartaa server-ka adoo soo diraya amarka SHUTDOWN oo dib u bilaabaya. Maaddaama hawlgallada dhicitaanka ee Redis si macno ahaan loo hirgeliyay si uu wakhtigu u sii socdo xitaa marka server-ku dansan yahay, dhammaan shuruudahayagu waa fiican yihiin. Tani waa caadi ilaa inta la hubiyay xidhidh caadi ah. Maxaa la sameeyaa haddii ay dhacdo koronto go'an? Haddii Redis loo habeeyey si caadi ah, oo fsync ku wada shaqeynaya diskka ilbiriqsi kasta, markaa waxaa suurtogal ah in dib u bilaabashada ka dib aynaan haysan furahayaga. Aragti ahaan, haddii aan rabno inaan dammaanad qaadno ammaanka qufulka inta lagu jiro tusaale kasta oo dib loo bilaabo, waa inaan awoodno fsync=always ee goobaha kaydinta xogta muddada-dheer. Tani waxay si buuxda u dili doontaa waxqabadka, ilaa heerka nidaamyada CP ee dhaqan ahaan loo isticmaalo si ammaan ah loo fuliyo qufulyada la qaybiyey.

Laakiin xaaladdu way ka fiican tahay sida ay u muuqato jaleecada hore. Mabda 'ahaan, amniga algorithm waa la ilaaliyaa sababtoo ah marka tusaale ahaan dib loo bilaabo fashilka ka dib, kama qayb qaadanayso quful kasta oo hadda shaqeynaya.

Si loo xaqiijiyo tan, waxaan kaliya u baahanahay inaan hubinno in fashilka ka dib tusaalaha uu yahay mid aan la heli karin muddo wakhti ka badan TTL ugu badan ee aan isticmaalno. Sidan ayaanu sugi doonaa ilaa taariikhda uu dhacayo oo si toos ah loo sii daayo dhammaan furayaasha shaqaynayay wakhtiga fashilka.

Isticmaalka dib-u-bilaabida dib u bilaabashada, mabda'a ahaan waa suurtagal in la gaaro amniga xitaa haddii aysan jirin wax ku-sii-ku-meel-gaar ah oo Redis ah. Ogow, si kastaba ha ahaatee, in tani ay keeni karto ganaax ku xadgudubka gelitaanka. Tusaale ahaan, haddii inta badan kiisaska ay ku guuldareystaan, nidaamku wuxuu noqon doonaa mid caalami ah oo aan laga heli karin TTL (oo wax kheyraad ah lama xannibi karo inta lagu jiro wakhtigan).

Waxaan kordhineynaa helitaanka algorithm: waxaan kordhineynaa xannibaadda

Haddii shaqada ay sameeyeen macaamiishu ay ka kooban tahay tillaabooyin yaryar, waxaa suurtagal ah in la yareeyo muddada qufulka caadiga ah oo la hirgeliyo habka loo kordhiyo qufulka. Mabda 'ahaan, haddii macmiilku ku mashquulsan yahay xisaabinta oo qiimaha dhicitaanku uu yahay mid aad u hooseeya, waxaad u diri kartaa qoraal Lua dhammaan xaaladaha fidinaya TTL furaha haddii furuhu weli jiro oo qiimihiisu weli yahay qiime random ah oo la helay marka quful ayaa la helay.

Macmiilku waa inuu tixgeliyo oo keliya quful in dib loo helo haddii uu ku guulaystay inuu xidho inta badan kiisaska muddada ansaxinta gudaheed.

Run, farsamo ahaan algorithm isma beddelo, markaa tirada ugu badan ee isku dayga soo noqnoqda ee lagu helo qufulka waa in la xaddidaa, haddii kale guryaha la heli karo waa la jebin doonaa.

Source: www.habr.com

Add a comment