Redis Stream - kuvimbika uye scalability yeako mameseji masisitimu

Redis Stream - kuvimbika uye scalability yeako mameseji masisitimu

Redis Stream rudzi rutsva rweabstract data rwakaunzwa muRedis ine vhezheni 5.0
Sezvineiwo, Redis Stream iRondedzero yaunogona kuwedzera mapindiro. Chese chinopinda chine chiziviso chakasiyana. Nekusagadzikana, iyo ID inogadzirwa otomatiki uye inosanganisira timestamp. Naizvozvo, iwe unogona kubvunza huwandu hwemarekodhi nekufamba kwenguva, kana kugamuchira data nyowani sezvainosvika murukova, senge Unix "muswe -f" murairo unoverenga faira regi uye kuomesa uchimirira data nyowani. Ziva kuti vatengi vazhinji vanogona kuteerera kune tambo panguva imwe chete, sekuwanda kwe "muswe -f" maitiro anogona kuverenga faira panguva imwe chete pasina kupokana nemumwe.

Kuti tinzwisise mabhenefiti erudzi rutsva rwe data, ngatitarisei nekukurumidza kune yakagara iripo Redis zvimiro izvo zvishoma zvinodzokorora mashandiro eRedis Stream.

Redis PUB/SUB

Redis Pub/Sub iri nyore meseji sisitimu yatovakwa mukati mekiyi-kukosha chitoro. Nekudaro, kuve nyore kunouya pamutengo:

  • Kana muparidzi nokuda kwechimwe chikonzero akakundikana, ipapo anorasikirwa nevanyoreri vake vose
  • Muparidzi anofanira kuziva kero chaiyo yevose vakanyoresa
  • Muparidzi anogona kuremedza vanyoreri vayo nebasa kana data ikaburitswa nekukurumidza kupfuura kugadziridzwa
  • Imeseji inodzimwa kubva mubhafa yemuparidzi pakarepo mushure mekuburitswa, zvisinei nekuti vangani vanyoreri vakatumirwa uye nekukasira kwavakaita kugadzirisa meseji iyi.
  • Vese vanyoreri vanogamuchira meseji panguva imwe chete. Vanyoreri pachavo vanofanira neimwe nzira kubvumirana pakati pavo pahurongwa hwekugadzirisa meseji imwechete.
  • Iko hakuna yakavakirwa-mukati nzira yekusimbisa kuti munyoreri abudirira kugadzirisa meseji. Kana munyoreri akagamuchira meseji uye akaparara panguva yekugadzirisa, muparidzi haazoziva nezvazvo.

Redis List

Redis Rondedzero chimiro chedata chinotsigira kuvharira kuverenga mirairo. Iwe unogona kuwedzera uye kuverenga mameseji kubva pakutanga kana kumagumo kwerondedzero. Zvichienderana nechimiro ichi, unogona kugadzira yakanaka stack kana mutsara kune yako yakagoverwa system, uye kazhinji izvi zvichave zvakakwana. Misiyano mikuru kubva kuRedis Pub/Sub:

  • Mharidzo inosvitswa kune mumwe mutengi. Wekutanga kuverenga-akavharwa mutengi achagamuchira data kutanga.
  • Clint anofanira kutanga kuverenga kwemeseji yega yega. List hapana chainoziva nezvevatengi.
  • Mameseji anochengetwa kusvika mumwe munhu aaverenga kana kuadzima. Kana iwe ukagadzirisa iyo Redis server kuti ibvise data kune disk, ipapo kuvimbika kwehurongwa kunowedzera zvakanyanya.

Nhanganyaya kuStream

Kuwedzera yekupinda murukova

chikwata XADD inowedzera kupinda patsva parukova. Rekodhi haisi tambo chete, ine imwechete kana kupfuura kiyi-kukosha mapeya. Saka, yekupinda yega yega yakatogadzirwa uye yakafanana nechimiro che CSV faira.

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

Mumuenzaniso uri pamusoro, tinowedzera minda miviri kurwizi ine zita (kiyi) "mystream": "sensor-id" uye "tembiricha" ine kukosha "1234" uye "19.8", zvichiteerana. Senharo yechipiri, murairo unotora chiziviso chinozopihwa kune yekupinda - iyi identifier inozivisa yega yega yekupinda murukova. Nekudaro, mune iyi kesi takapfuura * nekuti tinoda kuti Redis itigadzirire ID nyowani. Imwe neimwe ID itsva ichawedzera. Naizvozvo, imwe neimwe yekupinda nyowani ichave nepamusoro identifier maererano nezvakapfuura.

Identifier format

ID yekupinda yakadzoswa nemurairo XADD, ine zvikamu zviviri:

{millisecondsTime}-{sequenceNumber}

millisecondsTime - Unix nguva mumamilliseconds (Redis server nguva). Nekudaro, kana nguva iripo yakafanana kana kuti yakaderera pane yenguva yekurekodha yapfuura, ipapo iyo timestamp yekurekodha yapfuura inoshandiswa. Naizvozvo, kana sevha nguva ikadzokera kumashure munguva, iyo nyowani identifier icharamba ichichengeta iyo yekuwedzera pfuma.

sequenceNumber inoshandiswa kune zvinyorwa zvakagadzirwa mune imwechete millisecond. sequenceNumber ichawedzerwa ne1 inoenderana neyakapinda yapfuura. Nokuti iyo sequenceNumber iri 64 bits muhukuru, saka mukudzidzira haufanirwe kumhanya mumuganhu pahuwandu hwezvinyorwa zvinogona kugadzirwa mukati memillisecond imwe.

Maumbirwo ezviziviso zvakadaro anogona kuita seasinganzwisisike pakutanga pakuona. Muverengi asingavimbi angashamisika kuti sei nguva iri chikamu chechiziviso. Chikonzero ndechekuti Redis hova dzinotsigira renji mibvunzo neID. Sezvo chiziviso chakabatana nenguva iyo rekodhi yagadzirwa, izvi zvinoita kuti zvikwanise kubvunza nguva. Tichatarisa muenzaniso chaiwo patinotarisa murairo XRANGE.

Kana nekuda kwechimwe chikonzero mushandisi anofanirwa kutsanangura chiziviso chake, icho, semuenzaniso, chakabatana neimwe yekunze system, saka tinogona kuipfuudza kune murairo. XADD pachinzvimbo che* sezvinoratidzwa pazasi:

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

Ndokumbira utarise kuti mune iyi kesi iwe unofanirwa kutarisa iyo ID inowedzera iwe pachako. Mumuenzaniso wedu, chiziviso chishoma ndi "0-1", saka murairo haugamuchire chimwe chiziviso chinoenzana kana kuti chishoma pane "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

Huwandu hwemarekodhi parukova

Zvinokwanisika kuwana nhamba yezvinyorwa murukova nekushandisa murairo XLEN. Semuenzaniso wedu, uyu murairo uchadzosa kukosha kunotevera:

> XLEN somestream
(integer) 2

Range queries - XRANGE uye XREVRANGE

Kuti tikumbire dhata nerenji, isu tinofanirwa kudoma zviziviso zviviri - kutanga uye kuguma kwehuwandu. Rudzi rwakadzoserwa ruchasanganisira zvese zvinhu, kusanganisira miganhu. Kune zvakare maviri akakosha anozivisa β€œ-” uye β€œ+”, zvichireva diki (rekodhi rekutanga) uye rakakura (rekupedzisira rekodhi) chiziviso murukova. Muenzaniso uri pazasi unonyora ese mapindiro erukova.

> 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"

Rekodhi yega yega yakadzoserwa nhevedzano yezvinhu zviviri: chiziviso uye rondedzero yekiyi-value pairs. Takatotaura kuti zviziviso zverekodhi zvine chekuita nenguva. Naizvozvo, tinogona kukumbira huwandu hwenguva yakatarwa yenguva. Nekudaro, isu tinogona kutsanangura muchikumbiro kwete iyo yakazara identifier, asi chete iyo Unix nguva, tichisiya chikamu chine chekuita ne sequenceNumber. Chikamu chakasiiwa chechiratidzo chinozoiswa ku zero pakutanga kwehuwandu uye kusvika kune yakanyanya kukosha kukosha pakupera kwehuwandu. Pazasi pane muenzaniso wekuti iwe unogona sei kukumbira huwandu hwemamilliseconds maviri.

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

Isu tinongove nekupinda kumwe chete mumhando iyi, zvisinei mumaseti chaiwo e data mhedzisiro yakadzoserwa inogona kuve yakakura. Nokuda kwechikonzero ichi XRANGE inotsigira COUNT sarudzo. Nekutsanangura huwandu, tinogona kungowana marekodhi ekutanga eN. Kana isu tichida kuwana inotevera N zvinyorwa (pagination), tinogona kushandisa yekupedzisira yakagamuchirwa ID, kuwedzera iyo sequenceNumber mumwe wobvunza zvakare. Ngatitarisei izvi mumuenzaniso unotevera. Tinotanga kuwedzera 10 zvinhu ne XADD (tichifunga kuti mystream yanga yatozadzwa nezvinhu gumi). Kutanga kudzokorodza kuwana zvinhu zviviri pakuraira, tinotanga nerenji yakazara asi neCOUNT yakaenzana ne10.

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

Kuti tirambe tichidzokorora nezvinhu zviviri zvinotevera, tinoda kusarudza ID yekupedzisira yakagamuchirwa, kureva 1519073279157-0, uye kuwedzera 1 ku. sequenceNumber.
Iyo ID inokonzeresa, mune iyi nyaya 1519073279157-1, ikozvino inogona kushandiswa sekutanga kutsva kwekupokana kweyekufona kunotevera. XRANGE:

> 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"

Zvichingoenda zvakadaro. Nokuti kuoma XRANGE is O(log(N)) kutsvaga uyezve O(M) kudzosa M element, ipapo nhanho imwe neimwe yekudzokorora inokurumidza. Saka, kushandisa XRANGE nzizi dzinogona kudzokororwa zvakanaka.

chikwata XREVRANGE ndizvo zvakaenzana XRANGE, asi inodzosa maelementi mune reverse order:

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

Ndapota cherechedza kuti murairo XREVRANGE inotora nharo dzemhando kutanga uye kumira munhevedzano yakarongeka.

Kuverenga zvinyorwa zvitsva uchishandisa XREAD

Kazhinji basa rinomuka rekunyorera kune rukova uye kugamuchira meseji mitsva chete. Pfungwa iyi inogona kuita seyakafanana neRedis Pub/Sub kana kuvharisa Redis Rondedzero, asi pane misiyano yakakosha pakushandisa Redis Stream:

  1. Imwe neimwe meseji nyowani inounzwa kune wese anozvinyoresa nekukasira. Maitiro aya akasiyana nekuvharira Redis Rondedzero, apo meseji nyowani inongoverengwa nemunhu mumwe chete.
  2. Ndichiri muRedis Pub/Sub mameseji ese anokanganwika uye haana kumboramba akamira, muKuyerera mameseji ese anochengetwa nekusingaperi (kunze kwekunge mutengi akonzeresa kudzima).
  3. Redis Stream inobvumidza iwe kusiyanisa kuwana mameseji mukati merukova rumwe. Mumwe anonyoresa anogona chete kuona nhoroondo yavo yemeseji.

Iwe unogona kunyorera kune tambo uye kugamuchira mitsva mameseji uchishandisa murairo XREAD. Zviri zvishoma zvakaoma kupfuura XRANGE, saka tichatanga nemienzaniso iri nyore kutanga.

> 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"

Muenzaniso uri pamusoro unoratidza fomu isiri-blocking XREAD. Ziva kuti COUNT sarudzo ndeyekusarudza. Muchokwadi, iyo chete inodiwa yekuraira sarudzo ndeye STREAMS sarudzo, iyo inotsanangura rondedzero yenzizi pamwe chete neinoenderana inofananidzira identifier. Takanyora "STREAMS mystream 0" - tinoda kugashira marekodhi ese erukova rwemystream nechiziviso chinopfuura "0-0". Sezvauri kuona kubva pamuenzaniso, murairo unodzosa zita reshinda nekuti isu tinokwanisa kunyorera kune akawanda shinda panguva imwe chete. Tinogona kunyora, semuenzaniso, "STREAMS mystream otherstream 0 0". Ndokumbira utarise kuti mushure meiyo STREAMS sarudzo tinoda kutanga tapa mazita enzizi dzese dzinodiwa uyezve rondedzero yezviziviso.

Mune iyi fomu iri nyore murairo hauite chero chinhu chakakosha zvichienzaniswa XRANGE. Zvisinei, chinhu chinonakidza ndechokuti tinogona kutendeuka nyore nyore XREAD kune inovharira murairo, uchitsanangura iyo BLOCK nharo:

> XREAD BLOCK 0 STREAMS mystream $

Mumuenzaniso uri pamusoro, imwe BLOCK sarudzo inotsanangurwa ine nguva yekubuda kwe0 milliseconds (izvi zvinoreva kumirira nekusingaperi). Uyezve, pachinzvimbo chekupfuura yakajairika identifier yerukova mystream, yakakosha identifier $ yakapfuudzwa. Ichi chiziviso chakakosha chinoreva kuti XREAD inofanirwa kushandisa iyo yakanyanya identifier mumystream sechiziviso. Saka tichangogamuchira mameseji matsva kutanga kubva patakatanga kuteerera. Mune dzimwe nzira izvi zvakafanana neiyo Unix "muswe -f" murairo.

Ziva kuti kana uchishandisa iyo BLOCK sarudzo hatifanire kushandisa yakakosha identifier $. Tinogona kushandisa chero chiziviso chiripo murukova. Kana timu ichigona kushandira chikumbiro chedu nekukasira pasina kuvharira, ichaita kudaro, zvikasadaro ichavhara.

Kuvhara XREAD unogona zvakare kuteerera kune dzakawanda tambo kamwechete, iwe unongoda kutsanangura mazita avo. Muchiitiko ichi, murairo uchadzorera rekodhi yerukova rwekutanga rwakagamuchira data. Wekutanga akanyoreswa akavharirwa shinda yakapihwa achagamuchira data kutanga.

Consumer Groups

Mune mamwe mabasa, tinoda kudzikisira munyoreri kuwana mameseji mukati meshinda imwe. Muenzaniso wekuti izvi zvinogona kubatsira mutsetse wemeseji nevashandi vanogashira mameseji akasiyana kubva kune shinda, zvichibvumira kugadziridzwa kwemeseji kuyera.

Kana isu tichifungidzira kuti isu tine vatatu vanyoreri C1, C2, C3 uye shinda ine mameseji 1, 2, 3, 4, 5, 6, 7, ipapo mameseji anozopihwa sezviri mudhayagiramu iri pazasi:

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

Kuti uite izvi, Redis Stream inoshandisa pfungwa inonzi Consumer Group. Iyi pfungwa yakafanana neye pseudo-munyoreri, iyo inogamuchira data kubva kune rwizi, asi inonyatso kushumirwa nevazhinji vanyoreri mukati meboka, ichipa zvimwe zvivimbiso:

  1. Meseji yega yega inosvitswa kune mumwe munyoreri akasiyana mukati meboka.
  2. Muboka, vanyoreri vanozivikanwa nemazita avo, inova tambo inobata nyaya. Kana munhu akanyoresa akabuda muboka kwenguva pfupi, anogona kudzoserwa kuboka achishandisa zita rake rakasiyana.
  3. Boka rega rega reVatengi rinotevera "meseji yekutanga isina kuverengwa" pfungwa. Kana munyoreri akakumbira mameseji matsva, anogona chete kugamuchira mameseji asina kumbobvira atumirwa kune chero munhu anyoresa mukati meboka.
  4. Pane murairo wekusimbisa zvakajeka kuti meseji yakagadziriswa zvakabudirira nemunyoreri. Kusvikira murairo uyu wadanwa, meseji yakakumbirwa icharamba iri "yakamirira".
  5. MuBoka reVatengi, munyoreri wega wega anogona kukumbira nhoroondo yemameseji akaunzwa kwaari, asi haasati agadziriswa (mune "chakamirira" chimiro)

Neimwe nzira, mamiriro eboka anogona kuratidzwa sezvinotevera:

+----------------------------------------+
| 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)                             
+----------------------------------------+

Iye zvino yave nguva yekujairana nemirairo mikuru yeBoka reVatengi, inoti:

  • XGROUP anoshandiswa kugadzira, kuparadza uye kutonga mapoka
  • XREADGROUP yaishandiswa kuverenga ichiyerera nemuboka
  • XACK - uyu murairo unobvumira munyoreri kumaka meseji seyakagadziriswa zvinobudirira

Kugadzirwa kweBoka reVatengi

Ngatifungei kuti mystream yatovepo. Zvadaro murairo wekugadzira boka uchaita senge:

> XGROUP CREATE mystream mygroup $
OK

Paunenge uchigadzira boka, isu tinofanirwa kupfuudza chiziviso, kutanga kubva iro boka richagamuchira mameseji. Kana tichingoda kugamuchira mameseji matsva, saka tinogona kushandisa chaiyo identifier $ (semumuenzaniso wedu uri pamusoro). Kana iwe ukatsanangura 0 pachinzvimbo chechiziviso chakakosha, ipapo mameseji ese ari mushinda anozowanikwa kuboka.

Iye zvino boka rakagadzirwa, tinogona kubva tatanga kuverenga mameseji tichishandisa murairo XREADGROUP. Uyu murairo wakafanana zvikuru ne XREAD uye inotsigira sarudzo yeBLOCK sarudzo. Nekudaro, pane inodiwa GROUP sarudzo inofanirwa kugara ichitsanangurwa nenharo mbiri: zita reboka uye zita remunyoreri. Iyo COUNT sarudzo inotsigirwawo.

Tisati taverenga shinda, ngatiise mamwe mameseji ipapo:

> 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

Zvino ngatiedzei kuverenga rwizi urwu kuburikidza neboka:

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

Murairo uri pamusoro unoverenga verbatim sezvinotevera:

"Ini, munyoreri Alice, nhengo yeboka rangu, ndinoda kuverenga meseji kubva kurwizi rwangu isina kumbobvira yasvitswa kune chero munhu."

Pese munhu anonyoresa paanoita oparesheni paboka, inofanirwa kupa zita rayo, ichizvizivisa mukati meboka. Pane chimwe chinhu chakakosha mumurairo uri pamusoro - iyo yakakosha identifier ">". Iyi yakakosha identifier inosefa mameseji, ichisiya chete ayo asati ambounzwa.

Zvakare, mune dzakakosha zviitiko, unogona kudoma chaiyo identifier senge 0 kana chero chimwe chiziviso chinoshanda. Muchiitiko ichi murairo XREADGROUP ichakudzosera nhoroondo yemameseji ane chimiro che "kumirira" akaunzwa kune akanyoreswa (Alice) asi haasati abvumwa uchishandisa rairo. XACK.

Tinogona kuyedza maitiro aya nekukasira kutsanangura iyo ID 0, pasina sarudzo NY. Tichangoona meseji yakamirira, kureva, meseji yeapuro:

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

Nekudaro, kana isu tikasimbisa meseji seyakagadziriswa zvinobudirira, saka haicharatidzike:

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

Iye zvino inguva yaBob yekuverenga chimwe chinhu:

> 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, nhengo yeboka rangu, akakumbira asingapfuure mameseji maviri. Murairo unongoshuma mameseji asina kutumirwa nekuda kweiyo yakakosha identifier ">". Sezvauri kuona, meseji "apple" haizoratidzike sezvo yakatoendeswa kuna Alice, saka Bob anogamuchira "orenji" uye "strawberry".

Nenzira iyi, Alice, Bob, uye chero mumwe munhu anonyoresa kuboka anogona kuverenga akasiyana mameseji kubva kune imwecheteyo rukova. Vanogona zvakare kuverenga nhoroondo yavo yemameseji asina kugadziriswa kana kumaka mameseji sekugadziriswa.

Pane zvinhu zvishoma zvekuchengeta mupfungwa:

  • Pakarepo munyoreri anoona meseji semurairo XREADGROUP, iyi meseji inopinda mune "yakamirira" mamiriro uye inopihwa kune iyeye akanyoresa. Vamwe vakanyoresa muboka havazokwanisi kuverenga meseji iyi.
  • Vanyoreri vanogadzirwa otomatiki pakutaurwa kwekutanga, hapana chikonzero chekuvagadzira zvakajeka.
  • Nekubatsirwa kwe XREADGROUP unogona kuverenga mameseji kubva kune akawanda akasiyana shinda panguva imwe chete, zvisinei kuti izvi zvishande unofanirwa kutanga wagadzira mapoka ane zita rakafanana pashinda yega yega uchishandisa. XGROUP

Kupora mushure mekukundikana

Munyoreri anogona kupora kubva mukutadza uye kuverengazve runyorwa rwemeseji aine "chakamirira" chimiro. Nekudaro, munyika chaiyo, vanyoreri vanogona kupedzisira vakundikana. Chii chinoitika kumunyoreri akanamatira mameseji kana munyoreri asingakwanisi kupora kubva mukutadza?
Boka reVatengi rinopa chimiro chinoshandiswa kune akadai - kana iwe uchida kushandura muridzi wemameseji.

Chinhu chekutanga chaunofanirwa kuita kufonera murairo XPENDING, iyo inoratidza mameseji ese ari muboka aine chimiro "chakamirira". Muchimiro chayo chakareruka, murairo unodaidzwa nenharo mbiri chete: zita reshinda uye zita reboka:

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

Chikwata chakaratidza nhamba yemeseji isina kugadziridzwa yeboka rese uye kune mumwe nemumwe anyoresa. Tinongova naBob ane mameseji maviri akasarudzika nekuti meseji chete yakakumbirwa naAlice yakasimbiswa nayo XACK.

Tinogona kukumbira rumwe ruzivo tichishandisa dzimwe nharo:

XPENDING {key} {groupname} [{start-id} {end-id} {count} [{consumer-name}]]
{start-id} {end-id} - mhando yezviziviso (unogona kushandisa β€œ-” uye β€œ+”)
{count} - nhamba yekuedza kuendesa
{Consumer-zita} - zita reboka

> 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

Iye zvino tave neruzivo rwemeseji yega yega: ID, zita remunyoreri, nguva isingaite mumamilliseconds uye pakupedzisira huwandu hwekuyedza kuendesa. Tine mameseji maviri kubva kuna Bob uye vanga vasina basa kwe74170458 milliseconds, angangoita maawa makumi maviri.

Ndokumbira utarise kuti hapana ari kutitadzisa kutarisa kuti zviri mumeseji zvaive zvii nekushandisa XRANGE.

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

Tinofanira kungodzokorora chiziviso chimwe kaviri mumakakatanwa. Zvino zvatava neruzivo, Alice anogona kusarudza kuti mushure memaawa makumi maviri ekuzorora, Bob anogona kunge asingazopore, uye yave nguva yekubvunza iwo mameseji uye kutangazve kugadziridza kuna Bob. Nokuda kweizvi tinoshandisa murairo XCLAIM:

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

Tichishandisa murairo uyu, tinogona kugamuchira "kunze" meseji iyo isati yagadziriswa nekushandura muridzi ku{consumer}. Nekudaro, isu tinokwanisa zvakare kupa shoma shoma yekuita nguva {min-idle-nguva}. Izvi zvinobatsira kudzivirira mamiriro ezvinhu apo vatengi vaviri vanoedza kuchinja panguva imwe chete muridzi wemameseji mamwe chete:

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

Mutengi wekutanga anozogadzirisa nguva yekudzikira uye kuwedzera iyo counter counter. Saka mutengi wechipiri haazokwanisi kuikumbira.

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

Iyo meseji yakatorwa zvakabudirira naAlice, uyo anogona ikozvino kugadzirisa meseji uye kubvuma.

Kubva pamuenzaniso wepamusoro, unogona kuona kuti chikumbiro chakabudirira chinodzorera zviri mukati memeseji pachayo. Zvisinei, izvi hazvidiwi. Iyo JUSTID sarudzo inogona kushandiswa kudzosera mameseji maID chete. Izvi zvinobatsira kana iwe usingafarire ruzivo rwemeseji uye uchida kuwedzera system performance.

Delivery counter

Kaunda yaunoona mune zvabuda XPENDING nhamba yekutumirwa kwemeseji yega yega. Kaunda yakadai inokwidziridzwa munzira mbiri: kana meseji ikabudirira kukumbirwa kuburikidza XCLAIM kana kufona kwashandiswa XREADGROUP.

Zvakajairika kuti mamwe mameseji aunzwe kakawanda. Chinhu chikuru ndechekuti mameseji ese anozogadziriswa. Dzimwe nguva matambudziko anoitika kana uchigadzira meseji nekuti meseji pachayo yakashatiswa, kana kugadzirisa meseji kunokonzeresa kukanganisa mukodhi yemubati. Muchiitiko ichi, zvinogona kuitika kuti hapana achakwanisa kugadzirisa iyi meseji. Sezvo tine kaunda yekuedza kuendesa, tinogona kushandisa kaunda iyi kuona mamiriro akadai. Naizvozvo, kana nhamba yekutumira yasvika pahuwandu hwepamusoro hwaunotsanangura, zvingave zvine hungwaru kuisa meseji yakadai pane imwe shinda uye kutumira chiziviso kune system administrator.

Thread State

chikwata XINFO inoshandiswa kukumbira ruzivo rwakasiyana-siyana nezve thread uye mapoka ayo. Semuenzaniso, murairo wekutanga unotaridzika seizvi:

> 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"

Murairo uri pamusoro unoratidza ruzivo rwakakwana nezverukova rwakataurwa. Iye zvino muenzaniso wakaoma zvishoma:

> 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

Murairo uri pamusoro unoratidza ruzivo rwese kumapoka ese eshinda yakatsanangurwa

> 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

Murairo uri pamusoro unoratidza ruzivo kune vese vanyoreri verukova rwakataurwa neboka.
Kana ukakanganwa iyo syntax yekuraira, ingobvunza iwo murairo pachawo kuti ubatsirwe:

> 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.

Stream Size Limit

Mazhinji maapplication haadi kuunganidza data murukova zvachose. Zvinowanzobatsira kuve nehuwandu hwehuwandu hwemashoko anotenderwa pa thread. Mune zvimwe zviitiko, zvinobatsira kutamisa mameseji ese kubva pashinda kuenda kune chimwe chitoro chinoramba chiripo kana saizi yakatsanangurwa yasvikwa. Unogona kudzikamisa saizi yerukova uchishandisa MAXLEN parameter mukuraira 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"

Paunenge uchishandisa MAXLEN, marekodhi ekare anodzimwa otomatiki kana asvika paurefu hwakatarwa, saka rukova rune saizi isingachinji. Nekudaro, kuchekerera mune iyi kesi hakuitike nenzira inoshanda muRedis ndangariro. Iwe unogona kugadzirisa mamiriro acho nenzira inotevera:

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

Iyo ~ nharo mumuenzaniso uri pamusoro zvinoreva kuti hatidi kudzikamisa kureba kwerukova kune yakakosha kukosha. Mumuenzaniso wedu, iyi inogona kuva chero nhamba yakakura kudarika kana yakaenzana ne1000 (semuenzaniso, 1000, 1010, kana 1030). Isu takangotaura pachena kuti tinoda kuti rukova rwedu ruchengete zvingangoita 1000 marekodhi. Izvi zvinoita kuti ndangariro manejimendi ishande zvakanyanya mukati meRedis.

Panewo boka rakasiyana XTRIM, iyo inoita zvakafanana:

> XTRIM mystream MAXLEN 10

> XTRIM mystream MAXLEN ~ 10

Kuramba kuchichengetedza uye kudzokorora

Redis Stream inodzokororwa zvinodzokororwa kune varanda node uye inochengetwa kumafaira seAOF (snapshot yedata rese) uye RDB (log yezvese kunyora mashandiro). Replication yeConsumer Groups state inotsigirwawo. Naizvozvo, kana meseji iri mu "yakamirira" chimiro pane master node, ipapo pavaranda node iyi meseji ichava nechimiro chakafanana.

Kubvisa maelementi ega ega kubva murukova

Pane murairo unokosha wekudzima mameseji XDEL. Murairo unowana zita retambo inoteverwa nemeseji ID kuti dzibviswe:

> 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"

Paunenge uchishandisa murairo uyu, unofanirwa kufungisisa kuti chiyeuchidzo chaicho hachizobudiswi pakarepo.

Zero kureba hova

Musiyano uripo pakati pehova uye mamwe maRedis data zvimiro ndewekuti kana mamwe dhizaini asisina zvinhu mukati mawo, semhedzisiro, iyo data data pachayo ichabviswa mundangariro. Saka, semuenzaniso, iyo yakarongwa seti ichabviswa zvachose kana ZREM call yabvisa chekupedzisira chinhu. Pane kudaro, tambo dzinotenderwa kuramba dziri mundangariro kunyangwe pasina chero zvinhu mukati.

mhedziso

Redis Stream yakanakira kugadzira meseji broker, mitsetse yemeseji, kutema kwakabatana, uye nhoroondo-inochengeta chat masisitimu.

Sezvandakambotaura Niklaus Wirth, zvirongwa ndeye algorithms pamwe nedata zvimiro, uye Redis inotokupa imi mose.

Source: www.habr.com

Voeg