Redis Stream - isku halaynta iyo miisaanka nidaamka fariimahaaga

Redis Stream - isku halaynta iyo miisaanka nidaamka fariimahaaga

Redis Stream waa xog cusub oo aan la taaban karin oo lagu soo bandhigay Redis oo wata nooca 5.0
Fikrad ahaan, Redis Stream waa Liis aad ku dari karto gelitaannada. Gelin kastaa wuxuu leeyahay aqoonsi gaar ah. Sida caadiga ah, aqoonsiga si toos ah ayaa loo soo saaray waxaana ku jira shaambad wakhti ah. Sidaa darteed, waxa aad waydiin kartaa diiwaano kala duwan muddo ka dib, ama waxaad heli kartaa xog cusub marka ay soo gasho qulqulka, sida amarka Unix "tail -f" uu akhriyo faylka log oo uu qaboojiyo inta aad sugayso xog cusub. Ogsoonow in macaamiil badan ay dhegaysan karaan dunta isku mar, si la mid ah habka "dabada -f" ay u akhrin karaan faylka isku mar iyaga oo aan is khilaafin.

Si aad u fahamto dhammaan faa'iidooyinka nooca xogta cusub, aynu si degdeg ah u eegno qaab-dhismeedka Redis ee muddada dheer jiray ee qayb ahaan soo koobaya shaqeynta Redis Stream.

Redis PUB/SUB

Redis Pub/Sub waa nidaam farimo fudud oo horay loogu dhisay dukaankaaga qiimaha muhiimka ah. Si kastaba ha ahaatee, fududaantu waxay ku timaadaa kharash:

  • Haddii daabacaha sabab qaar ka mid ah uu ku guuldareysto, markaas wuxuu luminayaa dhammaan macaamiishiisa
  • Daabacuhu wuxuu u baahan yahay inuu ogaado ciwaanka saxda ah ee dhammaan macaamiisheeda
  • Daabace ayaa laga yaabaa inay ku xad-gudbiso macaamiisheeda shaqada haddii xogta la daabaco si ka dhakhso badan sidii loo habeeyay
  • Fariinta waa laga tirtiraa kaydka daabacaha isla markiiba daabacaadda ka dib, iyadoon loo eegayn inta macaamiil ee la geeyay iyo sida dhakhsaha leh ee ay u socodsiiyeen fariintan.
  • Dhammaan macaamiishu waxay heli doonaan fariinta isku mar. Macaamiisha laftoodu waa inay si uun ku heshiiyaan dhexdooda sida ay u habeeyaan fariin isku mid ah.
  • Ma jiro hab ku dhisan oo lagu xaqiijiyo in macaamiishu si guul leh u farsameeyay fariinta. Haddii macmiilku helo fariin oo uu shil galo inta lagu jiro habaynta, daabacuhu ma ogaan doono waxa ku saabsan.

Liiska Redis

Liiska Redis waa qaab dhismeed xog ah oo taageera xannibaadda amarada akhrinta. Waxaad ku dari kartaa oo akhrin kartaa fariimaha bilawga ama dhammaadka liiska. Iyada oo ku saleysan qaab dhismeedkan, waxaad samayn kartaa xirmo ama saf fiican nidaamkaaga la qaybiyay, inta badan kiisaska tani way ku filnaan doontaa. Farqiga ugu weyn ee ka yimid Redis Pub/Sub:

  • Fariinta waxa la geeyaa hal macmiil. Macmiilka ugu horreeya ee la xannibay ayaa heli doona xogta marka hore.
  • Clint waa inuu bilaabo hawlgalka akhrinta fariin kasta laftiisa. Liisku waxba kama oga macaamiisha.
  • Farimaha waa la kaydiyaa ilaa qof akhriyo ama si cad u tirtiro. Haddii aad u habayso server-ka Redis si aad xogta ugu daadiso diskka, markaa kalsoonida nidaamka ayaa si aad ah u kordheysa.

Hordhac Stream

Ku darida galitaanka qulqulka

kooxda XADD wuxuu ku darayaa gelid cusub qulqulka. Rikoorku kaliya maaha xadhig, wuxuu ka kooban yahay hal ama dhowr lamaane oo qiimo leh. Markaa, gelid kastaa waa la habeeyey oo u eeg qaab-dhismeedka faylka CSV.

> XADD mystream * sensor-id 1234 temperature 19.8
1518951480106-0

Tusaalaha kore, waxaan ku darnaa laba goobood oo qulqulka leh magaca (furaha) "mystream": "sensor-id" iyo "heerkulka" oo leh qiyamka "1234" iyo "19.8", siday u kala horreeyaan. Sida doodda labaad, talisku waxa uu qaadanayaa tilmaanta loo qoondayn doono gelitaanka - aqoonsigani waxa uu si gaar ah u aqoonsanayaa gelid kasta oo qulqulka ku jira. Si kastaba ha ahaatee, kiiskan waanu ka gudubnay * sababtoo ah waxaan rabnaa in Redis ay noo sameyso aqoonsi cusub. Aqoonsi kasta oo cusub ayaa kordhin doona. Sidaa darteed, gelid kasta oo cusub waxay yeelan doontaa aqoonsi sare marka loo eego gelitaanadii hore.

Qaabka aqoonsiga

Aqoonsiga gelitaanka waxaa soo celiyay taliska XADD, waxa uu ka kooban yahay laba qaybood:

{millisecondsTime}-{sequenceNumber}

millisecondsTime - Waqtiga Unix ee millise seconds (Waqtiga server-ka Redis). Si kastaba ha noqotee, haddii wakhtiga hadda la joogo uu la mid yahay ama ka yar yahay wakhtiga duubista hore, markaa shaambada wakhtiga duubista hore ayaa la isticmaalayaa. Sidaa darteed, haddii wakhtiga server-ku uu ku soo noqdo wakhtiga, aqoonsiga cusub ayaa weli sii hayn doona hantida korodhka.

isku xigxiga Number loo isticmaalo diiwaanada lagu abuuray isla millise seconds. isku xigxiga Number waxaa lagu kordhin doonaa 1 marka loo eego gelitaankii hore. Sababtoo ah isku xigxiga Number cabbirkiisu waa 64-bits, markaa ficil ahaan waa inaadan ku dhicin xadka tirada diiwaannada ee lagu soo saari karo hal milli-ilbiriqsi gudahood.

Qaabka aqoonsiyaasha noocaas ah waxay u ekaan karaan kuwo qariib ah jaleecada hore. Akhristaha aan aamini karin ayaa laga yaabaa inuu is weydiiyo sababta waqtigu uga mid yahay aqoonsiga. Sababta ayaa ah in Redis durdurrada ay taageerto weydiimaha kala duwan ee aqoonsiga. Maadaama aqoonsiga uu la xiriiro wakhtiga diiwaanka la abuuray, tani waxay suurtogal ka dhigaysaa in la waydiiyo kala duwanaanshaha wakhtiga. Waxaan eegi doonaa tusaale gaar ah markaan eegno amarka XRAN.

Haddii sabab qaar ka mid ah isticmaaluhu u baahan yahay inuu qeexo aqoonsigiisa, taas oo, tusaale ahaan, la xiriirto qaar ka mid ah nidaamka dibadda, ka dibna waxaan u gudbin karnaa amarka XADD halkii * sida hoos ku cad:

> XADD somestream 0-1 field value
0-1
> XADD somestream 0-2 foo bar
0-2

Fadlan la soco in xaaladdan ay tahay inaad la socoto kororka aqoonsiga. Tusaalahayaga, aqoonsiga ugu yar waa "0-1", markaa amarku ma aqbali doono aqoonsi kale oo la mid ah ama ka yar "0-1".

> XADD somestream 0-1 foo bar
(error) ERR The ID specified in XADD is equal or smaller than the target stream top item

Tirada diiwaanka durdurkiiba

Waxaa suurtogal ah in tirada diiwaannada lagu helo qulqulka si fudud adiga oo isticmaalaya amarka XLEN. Tusaale ahaan, amarkan ayaa soo celin doona qiimaha soo socda:

> XLEN somestream
(integer) 2

Weydiimaha kala duwan - XRANGE iyo XREVRANGE

Si aad u codsato xogta kala duwan, waxaan u baahanahay inaan qeexno laba tilmaame - bilowga iyo dhamaadka xadka. Kala duwanaanshaha la soo celiyay waxaa ku jiri doona dhammaan walxaha, oo ay ku jiraan xuduudaha. Waxa kale oo jira laba tilmaame oo gaar ah β€œ-” iyo β€œ+”, siday u kala horreeyaan oo micnahoodu yahay kan ugu yar (rikoodhka kowaad) iyo kan ugu weyn (rikoodhka u dambeeya) ee aqoonsiga qulqulka. Tusaalaha hoose wuxuu taxayaa dhammaan gelitaanka qulqulka.

> XRANGE mystream - +
1) 1) 1518951480106-0
   2) 1) "sensor-id"
      2) "1234"
      3) "temperature"
      4) "19.8"
2) 1) 1518951482479-0
   2) 1) "sensor-id"
      2) "9999"
      3) "temperature"
      4) "18.2"

Rikoor kasta oo la soo celiyay waa laba qaybood oo kala duwan: tilmaame iyo liiska lammaaneyaasha qiimaha muhiimka ah. Waxaan horey u sheegnay in aqoonsiyaasha diiwaanku ay la xiriiraan waqtiga. Sidaa darteed, waxaan codsan karnaa waqtiyo kala duwan oo waqti gaar ah. Si kastaba ha ahaatee, waxaan codsiga ku qeexi karnaa aqoonsiga buuxa, laakiin kaliya wakhtiga Unix, ka tagista qaybta la xidhiidha isku xigxiga Number. Qaybta la dhaafay ee aqoonsiga waxa si toos ah loo dejin doonaa eber bilowga kala duwanaanshaha iyo ilaa qiimaha ugu badan ee suurtogalka ah dhamaadka xadka. Hoos waxaa ku yaal tusaale ah sida aad u codsan karto tiro dhan laba millise seconds.

> XRANGE mystream 1518951480106 1518951480107
1) 1) 1518951480106-0
   2) 1) "sensor-id"
      2) "1234"
      3) "temperature"
      4) "19.8"

Waxaan leenahay hal gelitaan oo kaliya ee xadkan, si kastaba ha ahaatee xogta dhabta ah ee xogta dhabta ah natiijada la soo celiyay waxay noqon kartaa mid weyn. Sababtan awgeed XRAN waxay taageertaa doorashada COUNT Marka la qeexo tirada, waxaan si fudud u heli karnaa diiwaanada N ugu horreeya. Haddii aan u baahanahay inaan helno diiwaanada N ee soo socda (pagination), waxaan isticmaali karnaa aqoonsiga ugu dambeeya ee la helo, kordhino isku xigxiga Number mid ka mid ah oo mar kale weydii. Bal aan eegno tan tusaalahan soo socda. Waxaan ku bilaabaynaa ku darida 10 walxood oo leh XADD (malaha in mystream ay mar hore ka buuxsameen 10 walxood). Si aan u bilowno soo noqnoqoshada helitaanka 2 walxood amarkiiba, waxaan ku bilownaa tirada buuxda laakiin COUNT waxay la mid tahay 2.

> XRANGE mystream - + COUNT 2
1) 1) 1519073278252-0
   2) 1) "foo"
      2) "value_1"
2) 1) 1519073279157-0
   2) 1) "foo"
      2) "value_2"

Si aan u sii wadno ku celcelinta labada walxood ee soo socda, waxaan u baahanahay in aan doorano aqoonsigii ugu dambeeyay ee la helay, sida 1519073279157-0, oo aan ku darno 1 isku xigxiga Number.
Aqoonsiga natiijada, kiiskan 1519073279157-1, hadda waxaa loo isticmaali karaa bilawga kala duwanaanta cusub ee wicitaanka soo socda XRAN:

> XRANGE mystream 1519073279157-1 + COUNT 2
1) 1) 1519073280281-0
   2) 1) "foo"
      2) "value_3"
2) 1) 1519073281432-0
   2) 1) "foo"
      2) "value_4"

Iyo wixi la mida. Sababtoo ah kakanaanta XRAN waa O(log(N)) in la baadho ka dibna O(M) si loo soo celiyo curiyeyaasha M, ka dib tilaabo kasta oo soo noqnoqonaysa waa dhakhso. Sidaa darteed, isticmaal XRAN durdurrada waxaa loo soo celin karaa si hufan.

kooxda XAQIIJIN waa u dhigma XRAN, laakiin wuxuu u soo celiyaa canaasiirta siday u kala horreeyaan:

> XREVRANGE mystream + - COUNT 1
1) 1) 1519073287312-0
   2) 1) "foo"
      2) "value_10"

Fadlan ogow in amarka XAQIIJIN qaadaa doodaha kala duwan waxay ku bilowdaan una joogsadaan siday u kala horreeyaan.

Akhrinta qoraalada cusub adoo isticmaalaya XREAD

Badanaa hawshu waxay soo baxdaa isdiiwaangelinta qulqulka iyo helitaanka farriimaha cusub oo keliya. Fikradani waxay u ekaan kartaa mid la mid ah Redis Pub/Sub ama xannibidda Liiska Redis, laakiin waxaa jira farqi asaasi ah oo ku saabsan sida loo isticmaalo Redis Stream:

  1. Fariin kasta oo cusub waxa loo geeyaa macaamiil kasta si caadi ah. Dabeecaddani way ka duwan tahay liiska Redis List ee xannibaya, halkaas oo farriinta cusub uu akhrin doono hal macaamiil kaliya.
  2. Inta ku jirta Redis Pub/Sub dhamaan fariimaha waa la ilaaway oo waligood lama sii socon, Stream dhamaan fariimaha waa la hayaa ilaa aan la cayimin (haddii aanu macmiilku si cad u sababin tirtirka).
  3. Redis Stream wuxuu kuu ogolaanayaa inaad kala saartid gelitaanka fariimaha hal durdur. Macmiil gaar ah ayaa kaliya arki kara taariikhdooda fariinta gaarka ah.

Waxaad isku qori kartaa dunta oo aad heli kartaa fariimo cusub addoo isticmaalaya amarka AKHRISO. Way ka yara dhib badan tahay XRAN, marka waxaan ku bilaabaynaa tusaalooyinka fudud marka hore.

> XREAD COUNT 2 STREAMS mystream 0
1) 1) "mystream"
   2) 1) 1) 1519073278252-0
         2) 1) "foo"
            2) "value_1"
      2) 1) 1519073279157-0
         2) 1) "foo"
            2) "value_2"

Tusaalaha kore wuxuu muujinayaa foom aan xannibin AKHRISO. Ogsoonow in doorashada COUNT ay tahay ikhtiyaari. Dhab ahaantii, ikhtiyaarka amarka kaliya ee loo baahan yahay waa ikhtiyaarka STREAMS, kaas oo qeexaya liiska durdurrada oo ay la socoto aqoonsiga ugu sarreeya. Waxaan qornay "STREAMS mystream 0" - waxaan rabnaa inaan ku helno dhammaan diiwaanada qulqulka mystream oo wata aqoonsi ka weyn "0-0". Sida aad ka arki karto tusaalaha, amarku wuxuu soo celinayaa magaca dunta sababtoo ah waxaan isku mar isku qori karnaa tiro badan. Waxaan qori karnaa, tusaale ahaan, "STREAMS mystream otherstream 0 0". Fadlan ogow in doorashada STREAMS ka dib aan u baahanahay inaan marka hore bixino magacyada dhammaan durdurrada loo baahan yahay oo kaliya ka dibna liiska aqoonsiga.

Qaabkan fudud amarku ma sameeyo wax gaar ah marka la barbar dhigo XRAN. Si kastaba ha ahaatee, waxa xiisaha leh ayaa ah inaan si fudud u leexan karno AKHRISO ilaa amarka xannibaadda, qeexida dooda BLOCK:

> XREAD BLOCK 0 STREAMS mystream $

Tusaalaha kore, ikhtiyaarka cusub ee BLOCK ayaa lagu qeexay iyadoo waqtigu ka dhamaanayo 0 millise seconds (tani waxay la macno tahay sugitaan aan xad lahayn). Intaa waxaa dheer, halkii laga gudbin lahaa aqoonsiga caadiga ah ee qulqulka qulqulka, aqoonsi gaar ah $ ayaa la gudbiyay. Aqoonsigan gaarka ah macnihiisu waa taas AKHRISO waa in loo isticmaalo aqoonsiga ugu badan ee mystream sida aqoonsiga. Markaa waxa kaliya oo aan heli doonaa fariimo cusub oo bilaabmaya markii aanu bilownay dhagaysiga. Siyaabaha qaarkood tani waxay la mid tahay amarka Unix "tail -f".

Ogsoonow marka la isticmaalayo ikhtiyaarka BLOCK inaan loo baahnayn inaan isticmaalno aqoonsiga gaarka ah $. Waxaan isticmaali karnaa tilmaame kasta oo ka jira qulqulka. Haddii kooxdu ay si degdeg ah ugu adeegi karto codsigayaga iyada oo aan la xannibin, way samayn doontaa, haddii kale way xannibi doontaa.

Xayiraadda AKHRISO Waxa kale oo aad dhageysan kartaa taxane badan hal mar, kaliya waxaad u baahan tahay inaad sheegto magacyadooda. Xaaladdan oo kale, amarku wuxuu soo celin doonaa diiwaanka qulqulka ugu horreeya ee helay xogta. Macmiilkii ugu horreeyay ee la xannibay dunta la bixiyay ayaa heli doona xogta marka hore.

Kooxaha Macaamiisha

Hawlaha qaarkood, waxaan rabnaa in aan xaddidno gelitaanka macaamiishu fariimaha gudaha hal taxane ah. Tusaale ahaan halka ay tani faa'iido u yeelan karto waa saf fariin ah oo ay la socdaan shaqaalaha kuwaas oo heli doona farriimaha kala duwan ee dunta, taas oo u oggolaanaysa habka fariinta in la cabbiro.

Haddii aan qiyaasno in aan haysano saddex macaamiil C1, C2, C3 iyo dun ka kooban fariimaha 1, 2, 3, 4, 5, 6, 7, markaa fariimaha waxaa loo adeegi doonaa sida jaantuska hoose:

1 -> C1
2 -> C2
3 -> C3
4 -> C1
5 -> C2
6 -> C3
7 -> C1

Si loo gaaro saameyntan, Redis Stream waxay isticmaashaa fikrad la yiraahdo Kooxda Macaamilka. Fikradani waxay la mid tahay rukunaha beenta ah, kaas oo ka hela xogta qulqulka, laakiin dhab ahaantii waxaa u adeega macaamiil badan oo koox ah, iyagoo bixinaya dammaanad gaar ah:

  1. Farriin kasta waxaa loo dhiibaa macaamiisha kala duwan ee kooxda.
  2. Koox dhexdeeda, macaamiishu waxa lagu gartaa magacooda, kaas oo ah xadhig kiis xasaasi ah. Haddii macmiilku si ku meel gaar ah uga baxo kooxda, waxa lagu soo celin karaa kooxda isagoo isticmaalaya magaciisa gaarka ah.
  3. Koox kasta oo macaamiisha ahi waxay raacdaa fikradda "fariinta ugu horreysa ee aan la akhriyin". Marka macaamiishu codsado farriimo cusub, waxa ay heli kartaa oo kaliya fariimaha aan waligood hore loo geynin macaamiil ka mid ah kooxda.
  4. Waxaa jira amar ah in si cad loo xaqiijiyo in fariinta uu si guul leh uga shaqeeyay macaamiishu. Ilaa amarkan laga yeero, fariinta la codsaday waxay ku sii jiri doontaa heerka "la sugayo".
  5. Kooxda Macaamilka dhexdiisa, macaamiil kastaa waxa uu codsan karaa taariikhda fariimaha la soo gaadhsiiyay, laakiin aan wali la hawlgelin (xaalka "la sugayo")

Macnaha, xaalada kooxda waxa lagu tilmaami karaa sidan soo socota:

+----------------------------------------+
| consumer_group_name: mygroup          
| consumer_group_stream: somekey        
| last_delivered_id: 1292309234234-92    
|                                                           
| consumers:                                          
|    "consumer-1" with pending messages  
|       1292309234234-4                          
|       1292309234232-8                          
|    "consumer-42" with pending messages 
|       ... (and so forth)                             
+----------------------------------------+

Hadda waa waqtigii aad baran lahayd amarada ugu muhiimsan ee Kooxda Macaamiisha, kuwaas oo ah:

  • XGROUP loo isticmaalo abuurista, burburinta iyo maamulida kooxaha
  • GROUP loo isticmaalo in lagu akhriyo qulqulka iyada oo koox ah
  • XACK -Amarkani wuxuu u oggolaanayaa macaamiishu inuu calaamadeeyo farriinta sida si guul leh looga shaqeeyay

Abuuritaanka Kooxda Macaamilka

Aynu ka soo qaadno in mystream uu hore u jiray. Markaa amarka abuuritaanka kooxdu wuxuu u ekaan doonaa:

> XGROUP CREATE mystream mygroup $
OK

Marka la abuurayo koox, waa inaan gudbinaa aqoonsi, laga bilaabo kaas oo kooxdu ay heli doonto fariimaha. Haddii aan rabno inaan helno dhammaan farriimaha cusub, markaa waxaan isticmaali karnaa aqoonsiga gaarka ah $ (sida ku cad tusaalaha kore). Haddii aad sheegto 0 halkii aad ka heli lahayd aqoonsi gaar ah, markaa dhammaan fariimaha ku jira dunta ayaa diyaar u ah kooxda.

Hadda oo kooxda la abuuray, waxaan isla markiiba bilaabi karnaa akhrinta fariimaha isticmaalaya amarka GROUP. Amarkani aad buu ugu eg yahay AKHRISO waxayna taageertaa ikhtiyaarka BLOCK ee ikhtiyaarka ah. Si kastaba ha ahaatee, waxaa jira ikhtiyaarka GROUP ee loo baahan yahay oo ay tahay in mar walba lagu qeexo laba doodood: magaca kooxda iyo magaca macaamiisha. Doorashada COUNT sidoo kale waa la taageeray

Kahor akhrinta dunta, aan dhigno fariimaha qaarkood.

> XADD mystream * message apple
1526569495631-0
> XADD mystream * message orange
1526569498055-0
> XADD mystream * message strawberry
1526569506935-0
> XADD mystream * message apricot
1526569535168-0
> XADD mystream * message banana
1526569544280-0

Hadda aan isku dayno inaan akhrino qulqulkan kooxda:

> XREADGROUP GROUP mygroup Alice COUNT 1 STREAMS mystream >
1) 1) "mystream"
   2) 1) 1) 1526569495631-0
         2) 1) "message"
            2) "apple"

Amarka sare wuxuu u akhriyaa si toos ah sida soo socota:

"Aniga, macaamiisha Alice, oo xubin ka ah kooxdayda, waxaan rabaa inaan akhriyo hal fariin oo ka socota mystream oo aan waligeed qofna la gaarsiin."

Mar kasta oo macmiilku sameeyo qalliin koox, waa inuu bixiyaa magaceeda, isagoo si gaar ah u aqoonsanaya inuu ka tirsan yahay kooxda. Waxaa jira hal tafatiran oo kale oo aad muhiim u ah amarka kore - aqoonsiga gaarka ah ">". Aqoonsigan gaarka ah waxa uu shaandheeyaa fariimaha, isaga oo ka tagaya kaliya kuwa aan waligood la gudbin.

Sidoo kale, xaalado gaar ah, waxaad qeexi kartaa aqoonsi dhab ah sida 0 ama aqoonsi kasta oo kale oo ansax ah. Xaaladdan oo kale amarka GROUP waxay kuu soo celin doontaa taariikhda fariimaha leh xaalad "la sugayo" kuwaas oo loo gudbiyay macaamiisha la cayimay (Alice) laakiin aan wali la aqoonsan iyada oo la adeegsanayo amarka XACK.

Waxaan tijaabin karnaa hab-dhaqankan annagoo isla markiiba caddaynayna aqoonsiga 0, iyada oo aan ikhtiyaarka lahayn COUNT. Waxaan si fudud u arki doonaa hal fariin oo sugaysa, taas oo ah, fariinta tufaaxa:

> XREADGROUP GROUP mygroup Alice STREAMS mystream 0
1) 1) "mystream"
   2) 1) 1) 1526569495631-0
         2) 1) "message"
            2) "apple"

Si kastaba ha noqotee, haddii aan xaqiijino fariinta sida si guul leh loo farsameeyay, markaa mar dambe lama soo bandhigi doono:

> XACK mystream mygroup 1526569495631-0
(integer) 1
> XREADGROUP GROUP mygroup Alice STREAMS mystream 0
1) 1) "mystream"
   2) (empty list or set)

Hadda waa markeeda Bob inuu wax akhriyo:

> XREADGROUP GROUP mygroup Bob COUNT 2 STREAMS mystream >
1) 1) "mystream"
   2) 1) 1) 1526569498055-0
         2) 1) "message"
            2) "orange"
      2) 1) 1526569506935-0
         2) 1) "message"
            2) "strawberry"

Bob, oo xubin ka ah kooxdayda, ayaa waydiistay wax aan ka badnayn laba fariin. Talisku waxa uu soo tebiyaa farriimaha aan la soo dirin oo keliya sababtoo ah aqoonsiga gaarka ah ">". Sida aad arki karto, fariinta "tufaaxa" lama soo bandhigi doono tan iyo markii hore loo geeyey Alice, marka Bob wuxuu helayaa "orange" iyo "strawberry".

Sidan, Alice, Bob, iyo qof kasta oo kale oo ku xidhan kooxda waxay akhriyi karaan farriimaha kala duwan ee isla qulqulka. Waxay kaloo akhrin karaan taariikhdooda fariimaha aan la socodsiin ama waxay calaamadin karaan farriimaha sidii loo farsameeyay.

Waxaa jira dhowr waxyaalood oo ay tahay in maskaxda lagu hayo:

  • Isla marka macmiilku u tixgeliyo fariinta inay tahay amar GROUP, fariintan waxa ay galaysaa xaalada "la sugayo" waxaana loo qoondeeyay macmiilahaas gaarka ah. Macaamiisha kooxda kale ma awoodi doonaan inay akhriyaan fariintan.
  • Macaamiisha si toos ah ayaa loo abuuray marka ugu horeysa ee la sheego, looma baahna in si cad loo abuuro.
  • Iyada oo gargaar ah GROUP Waxaad akhrin kartaa fariimaha ka soo baxa taxane badan oo kala duwan isku mar, si kastaba ha ahaatee si ay tani u shaqeyso waxaad u baahan tahay inaad marka hore abuurto kooxo isku magac ah dun kasta XGROUP

Soo kabashada ka dib guuldarada

Macmiilku wuu ka soo kaban karaa guuldarada oo dib u akhriyi karaa liiskiisa fariimaha leh heerka "la sugayo". Si kastaba ha ahaatee, adduunka dhabta ah, macaamiisha ayaa laga yaabaa inay ugu dambeyntii ku guuldareystaan. Maxaa ku dhacaya fariimaha xanniban ee macmiilaha haddii macmiilku awoodi waayo inuu ka soo kabsado guuldarrooyinka?
Kooxda Macaamiisha waxay bixisaa sifo loo isticmaalo kiisaska noocaas ah - marka aad u baahan tahay inaad bedesho milkiilaha fariimaha.

Waxa ugu horreeya ee aad u baahan tahay inaad sameyso waa wac amarka XAFIDDA, kaas oo soo bandhigaya dhammaan fariimaha kooxda oo leh xaalad "la sugayo". Qaabka ugu fudud, amarka waxaa lagu magacaabaa laba doodood oo keliya: magaca dunta iyo magaca kooxda:

> XPENDING mystream mygroup
1) (integer) 2
2) 1526569498055-0
3) 1526569506935-0
4) 1) 1) "Bob"
      2) "2"

Kooxdu waxay soo bandhigtay tirada fariimaha aan la socodsiin ee kooxda oo dhan iyo macmiil kasta. Kaliya waxaan haynaa Bob oo wata laba fariimo oo aad u wanaagsan sababtoo ah fariinta kaliya ee Alice ay codsatay ayaa lagu xaqiijiyay XACK.

Waxaan codsan karnaa macluumaad dheeri ah anagoo adeegsanayna doodo badan:

XPENDING {key} {groupname} [{start-id} {end-id} {count} [{consumer-name}]]
{start-id} {dhamaadka-id} - noocyo kala duwan oo tilmaameyaal ah (waxaad isticmaali kartaa "-" iyo "+")
{count} - tirada isku dayga geynta
{consumer-name} - magaca kooxda

> XPENDING mystream mygroup - + 10
1) 1) 1526569498055-0
   2) "Bob"
   3) (integer) 74170458
   4) (integer) 1
2) 1) 1526569506935-0
   2) "Bob"
   3) (integer) 74170458
   4) (integer) 1

Hadda waxaan haynaa faahfaahin fariin kasta: aqoonsiga, magaca macaamiisha, wakhtiga aan shaqayn ee millise seconds iyo ugu dambeyntii tirada isku dayga gaarsiinta. Waxaan ka haynaa laba fariinood oo ka yimid Bob waxayna shaqo la'aan ahaayeen 74170458 millise seconds, qiyaastii 20 saacadood.

Fadlan ogow in qofna aanu nooga joojinayn in aanu hubino waxa fariinta ku jirta si fudud anaga oo adeegsanayna XRAN.

> XRANGE mystream 1526569498055-0 1526569498055-0
1) 1) 1526569498055-0
   2) 1) "message"
      2) "orange"

Kaliya waa inaan ku celinaa aqoonsi isku mid ah laba jeer doodaha. Hadda oo aanu hayno fikrad, Alice waxa laga yaabaa inay go'aansato in 20 saacadood ka dib, Bob aanu soo kabsan doonin, oo waa wakhtigii la waydiin lahaa fariimahaas oo dib loo bilaabi lahaa habayntooda Bob. Tan waxaan u isticmaalnaa amarka XCLAIM:

XCLAIM {key} {group} {consumer} {min-idle-time} {ID-1} {ID-2} ... {ID-N}

Isticmaalka amarkan, waxaan heli karnaa fariin "ajnabi" ah oo aan wali la hawlgelin anagoo u beddelayna mulkiilaha {consumer}. Si kastaba ha ahaatee, waxaanu sidoo kale bixin karnaa wakhtiga shaqo la'aanta ugu yar {min-time-time}. Tani waxay kaa caawinaysaa inaad iska ilaaliso xaalad ay laba macmiil isku dayaan inay isku mar beddelaan milkiilaha fariimaha isku midka ah:

Client 1: XCLAIM mystream mygroup Alice 3600000 1526569498055-0
Clinet 2: XCLAIM mystream mygroup Lora 3600000 1526569498055-0

Macmiilka ugu horreeya wuxuu dib u dejin doonaa wakhtiga dhimista wuxuuna kordhin doonaa miiska wax-diridda. Markaa macmiilka labaad ma awoodi doono inuu codsado.

> XCLAIM mystream mygroup Alice 3600000 1526569498055-0
1) 1) 1526569498055-0
   2) 1) "message"
      2) "orange"

Fariinta waxaa si guul leh u sheegatay Alice, oo hadda socodsiin karta fariinta oo ay aqoonsan karto.

Tusaalaha kore, waxaad arki kartaa in codsiga guulaysta uu soo celiyo nuxurka fariinta lafteeda. Si kastaba ha ahaatee, tani ma aha lagama maarmaan. Doorashada JUSTID waxa loo isticmaali karaa soo celinta aqoonsiga fariimaha oo kaliya. Tani waa mid faa'iido leh haddii aadan xiiseyneynin faahfaahinta fariinta oo aad rabto inaad kordhiso waxqabadka nidaamka.

Miisaanka gaarsiinta

Miisaanka aad ku aragto wax soo saarka XAFIDDA waa tirada gaarsiinta fariin kasta. Miisaanka noocaan ah waxaa loo kordhiyaa laba siyaabood: marka fariinta si guul leh loo codsado iyada oo loo marayo XCLAIM ama marka wicitaan la isticmaalo GROUP.

Waa caadi in fariimaha qaar la dhiibo dhowr jeer. Waxa ugu weyni waa in dhammaan fariimaha ugu dambeyntii la habeeyo. Mararka qaarkood dhibaatooyinku waxay dhacaan marka fariinta la habeeyo sababtoo ah fariinta lafteeda ayaa kharribtay, ama habaynta fariintu waxay keentaa khalad koodka maamulaha. Xaaladdan oo kale, waxaa laga yaabaa inay soo baxdo in qofna ma awoodi doono inuu socodsiiyo fariintan. Maadaama aanu haysano miiska isku dayga geynta, waxaanu isticmaali karnaa miiskan si aanu u ogaano xaaladahan oo kale. Sidaa darteed, marka tirinta gaarsiinta ay gaarto lambarka sare ee aad sheegtay, waxa ay u badan tahay in ay fiicnaan lahayd in fariinta noocaas ah lagu dhejiyo dun kale oo ogeysiis loo diro maamulaha nidaamka.

Gobolka dunta

kooxda XINFO loo isticmaalo in lagu codsado macluumaad kala duwan oo ku saabsan dunta iyo kooxaheeda. Tusaale ahaan, amarka aasaasiga ah wuxuu u eg yahay sidan:

> XINFO STREAM mystream
 1) length
 2) (integer) 13
 3) radix-tree-keys
 4) (integer) 1
 5) radix-tree-nodes
 6) (integer) 2
 7) groups
 8) (integer) 2
 9) first-entry
10) 1) 1524494395530-0
    2) 1) "a"
       2) "1"
       3) "b"
       4) "2"
11) last-entry
12) 1) 1526569544280-0
    2) 1) "message"
       2) "banana"

Amarka kore wuxuu muujinayaa macluumaadka guud ee ku saabsan qulqulka la cayimay. Hadda tusaale ka yara adag:

> XINFO GROUPS mystream
1) 1) name
   2) "mygroup"
   3) consumers
   4) (integer) 2
   5) pending
   6) (integer) 2
2) 1) name
   2) "some-other-group"
   3) consumers
   4) (integer) 1
   5) pending
   6) (integer) 0

Amarka kore wuxuu muujinayaa macluumaadka guud ee dhammaan kooxaha dunta la cayimay

> XINFO CONSUMERS mystream mygroup
1) 1) name
   2) "Alice"
   3) pending
   4) (integer) 1
   5) idle
   6) (integer) 9104628
2) 1) name
   2) "Bob"
   3) pending
   4) (integer) 1
   5) idle
   6) (integer) 83841983

Amarka kore wuxuu muujinayaa macluumaadka dhammaan macaamiisha socodka iyo kooxda la cayimay.
Haddii aad illowdo ereyga ereyga, kaliya weydiiso amarka laftiisa caawimaad:

> XINFO HELP
1) XINFO {subcommand} arg arg ... arg. Subcommands are:
2) CONSUMERS {key} {groupname}  -- Show consumer groups of group {groupname}.
3) GROUPS {key}                 -- Show the stream consumer groups.
4) STREAM {key}                 -- Show information about the stream.
5) HELP                         -- Print this help.

Xaddiga Xajmiga Socodka

Codsiyo badan ma rabaan inay xogta ku ururiyaan qulqulka weligood. Badanaa waa faa'iido leh in la haysto tirada ugu badan ee fariimaha loo oggol yahay dunta kasta. Xaalado kale, waxaa faa'iido leh in laga raro dhammaan fariimaha dunta oo loo wareejiyo dukaan kale oo joogto ah marka cabbirka dunta la cayimay la gaaro. Waxaad xaddidi kartaa cabbirka qulqulka adigoo isticmaalaya cabbirka MAXLEN ee amarka XADD:

> XADD mystream MAXLEN 2 * value 1
1526654998691-0
> XADD mystream MAXLEN 2 * value 2
1526654999635-0
> XADD mystream MAXLEN 2 * value 3
1526655000369-0
> XLEN mystream
(integer) 2
> XRANGE mystream - +
1) 1) 1526654999635-0
   2) 1) "value"
      2) "2"
2) 1) 1526655000369-0
   2) 1) "value"
      2) "3"

Markaad isticmaalayso MAXLEN, diiwaanadii hore si toos ah ayaa loo tirtiraa marka ay gaadhaan dherer cayiman, markaa qulqulku wuxuu leeyahay cabbir joogto ah. Si kastaba ha noqotee, manjooyin kiiskan kuma dhaco habka ugu waxtarka badan ee xusuusta Redis. Waxaad xaaladda u hagaajin kartaa sida soo socota:

XADD mystream MAXLEN ~ 1000 * ... entry fields here ...

Doodda tusaalaha sare waxay ka dhigan tahay inaan loo baahnayn inaan ku xaddidno dhererka qulqulka qiimo gaar ah. Tusaalahayaga, tani waxay noqon kartaa tiro kasta oo ka weyn ama la mid ah 1000 (tusaale, 1000, 1010, ama 1030). Waxaan si cad u qeexnay inaan doonayno in qulqulkayagu u kaydiyo ugu yaraan 1000 diiwaan. Tani waxay ka dhigaysaa maaraynta xusuusta mid aad waxtar u leh gudaha Redis.

Waxaa kaloo jira koox gooni ah XTRIM, kaas oo sameeya wax la mid ah:

> XTRIM mystream MAXLEN 10

> XTRIM mystream MAXLEN ~ 10

Kaydinta joogtada ah iyo ku celcelinta

Redis Stream si isku mid ah ayaa loogu soo koobay qanjidhada addoonta waxaana lagu kaydiyaa faylalka sida AOF (sawir dhammaan xogta) iyo RDB (log of all qoraal hawlgallada). Ku-noqoshada Gobolka Kooxaha Macaamiisha waa la taageeraa. Sidaa darteed, haddii fariintu ay ku jirto heerka "la sugayo" ee qanjidhada sayidkiisa, ka dibna qanjidhada addoonta fariintan waxay yeelan doontaa xaalad isku mid ah.

Ka saarida curiyeyaasha gaarka ah qulqulka

Waxaa jira amar gaar ah oo lagu tirtirayo fariimaha XDEL. Amarka waxa uu helayaa magaca dunta oo ay ku xigto aqoonsiga fariinta ee la tirtirayo:

> XRANGE mystream - + COUNT 2
1) 1) 1526654999635-0
   2) 1) "value"
      2) "2"
2) 1) 1526655000369-0
   2) 1) "value"
      2) "3"
> XDEL mystream 1526654999635-0
(integer) 1
> XRANGE mystream - + COUNT 2
1) 1) 1526655000369-0
   2) 1) "value"
      2) "3"

Markaad isticmaalayso amarkan, waxaad u baahan tahay inaad tixgeliso in xusuusta dhabta ah aan isla markiiba la sii deyn doonin.

durdurrada dhererka eber

Farqiga u dhexeeya durdurrada iyo qaab-dhismeedka xogta kale ee Redis ayaa ah in marka qaababka kale ee xogta aysan yeelanin walxo ku dhex jira, saameyn dhinac ah, qaabka xogta lafteeda ayaa laga saari doonaa xusuusta. Marka, tusaale ahaan, qaabka la kala soocay ayaa gabi ahaanba meesha laga saarayaa marka wicitaanka ZREM uu ka saaro walxaha ugu dambeeya. Taa baddalkeeda, dunta ayaa loo oggol yahay inay ku sii jiraan xusuusta xitaa iyada oo aan wax curiye ah ku lahayn gudaha.

gunaanad

Redis Stream waxay ku habboon tahay abuurista dilaaliinta fariimaha, safafka fariimaha, gaynta midaysan, iyo nidaamyada sheekaynta taariikhda-haynta.

Sidaan mar idhi Niklaus Wirth, Barnaamijyadu waa algorithms iyo qaab-dhismeedka xogta, iyo Redis mar horeba waxay ku siinaysaa labadaba.

Source: www.habr.com

Add a comment