Redis Stream - ts'epahalo le scalability ea litsamaiso tsa hau tsa melaetsa

Redis Stream - ts'epahalo le scalability ea litsamaiso tsa hau tsa melaetsa

Redis Stream ke mofuta o mocha oa data o hlahisitsoeng ho Redis ka mofuta oa 5.0
Ka mokhoa o hlakileng, Redis Stream ke Lethathamo leo u ka eketsang likenyelletso ho lona. Keno ka 'ngoe e na le sekhetho se ikhethileng. Ka ho sa feleng, ID e itlhahisa ka bo eona 'me e kenyelletsa setempe sa nako. Ka hona, o ka botsa mefuta ea lirekoto ha nako e ntse e ea, kapa oa fumana data e ncha ha e fihla molapong, joalo ka Unix "mohatla -f" taelo e bala faele ea log ebe e hoama ha e ntse e emetse data e ncha. Hlokomela hore bareki ba bangata ba ka mamela khoele ka nako e le 'ngoe, joalo ka ha mekhoa e mengata ea "tail -f" e ka bala faele ka nako e le' ngoe ntle le ho qabana.

Ho utloisisa melemo eohle ea mofuta o mocha oa data, ha re shebeng kapele meaho ea khale ea Redis e phetang karolo ea ts'ebetso ea Redis Stream.

Redis PUB/SUB

Redis Pub/Sub ke sistimi e bonolo ea melaetsa e seng e hahiloe ka har'a lebenkele la hau la bohlokoa. Leha ho le joalo, ho nolofatsa ho tla ka theko:

  • Haeba mohoeletsi ka lebaka le itseng a hlōleha, joale o lahleheloa ke bohle ba ngolisitseng
  • Mohatisi o hloka ho tseba aterese e nepahetseng ea ba ngolisitseng bohle
  • Mohatisi a ka tlatsa bangoli ba hae haholo ka mosebetsi haeba data e phatlalatsoa kapele ho feta kamoo e sebetsitsoeng
  • Molaetsa o hlakotsoe buffer ea mohatisi hang ka mor'a hore o phatlalatsoe, ho sa tsotelehe hore na o rometsoe ho ba ngolisitseng ba bakae le hore na ba khonne ho sebetsa molaetsa ona kapele hakae.
  • Bohle ba ngolisitseng ba tla fumana molaetsa ka nako e le 'ngoe. Ba ngolisitseng ka bobona ba tlameha ho lumellana ka tsela e itseng har'a bona ka taelo ea ho sebetsana le molaetsa o tšoanang.
  • Ha ho na mokhoa o kentsoeng ho netefatsa hore motho ea ngolisitseng o atlehile ho sebetsana le molaetsa. Haeba motho ea ngolisitseng a fumana molaetsa mme a senyeha nakong ea ts'ebetso, mohatisi a ke ke a tseba ka eona.

Lethathamo la Redis

Redis List ke sebopeho sa data se tšehetsang ho thibela litaelo tsa ho bala. O ka eketsa le ho bala melaetsa ho tloha qalong kapa qetellong ea lenane. Ho ipapisitsoe le sebopeho sena, o ka etsa stack kapa queue e ntle bakeng sa sistimi ea hau e ajoang, 'me maemong a mangata sena se tla lekana. Phapang e kholo ho tsoa ho Redis Pub / Sub:

  • Molaetsa o fetisetsoa ho moreki a le mong. Moreki oa pele ea thibetsoeng o tla fumana data pele.
  • Clint o tlameha ho qala ts'ebetso ea ho bala molaetsa o mong le o mong ka boeena. Lenane ha le tsebe letho ka bareki.
  • Melaetsa e bolokoa ho fihlela motho e mong a e bala kapa a e hlakola ka ho hlaka. Haeba u lokisa seva sa Redis hore u tsamaise data ho disk, joale ho tšepahala ha tsamaiso ho eketseha haholo.

Selelekela sa Stream

Ho kenya keno ho molatsoana

sehlopha XADD e eketsa keno e ncha molatsoaneng. Rekoto ha se khoele feela, e na le lipara tse le 'ngoe kapa ho feta tsa bohlokoa. Kahoo, keno e 'ngoe le e' ngoe e se e hlophisitsoe ebile e tšoana le sebopeho sa faele ea CSV.

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

Mohlala o ka holimo, re eketsa libaka tse peli molapong ka lebitso (senotlolo) "mystream": "sensor-id" le "mocheso" ka litekanyetso "1234" le "19.8", ka ho latellana. Joalo ka khang ea bobeli, taelo e nka sekhetho se tla abeloa ho kena - sekhetho sena se supa ka ho khetheha keno e 'ngoe le e 'ngoe ea molapo. Leha ho le joalo, tabeng ena re fetile * hobane re batla hore Redis e re hlahisetse ID e ncha. ID e 'ngoe le e' ngoe e ncha e tla eketseha. Ka hona, keno e 'ngoe le e' ngoe e ncha e tla ba le identifier e phahameng mabapi le likenyo tse fetileng.

Sebopeho sa sekhetho

ID ea ho kena e khutlisitsoe ka taelo XADD, e na le likarolo tse peli:

{millisecondsTime}-{sequenceNumber}

millisecondsTime - Nako ea Unix ho milliseconds (nako ea seva ea Redis). Leha ho le joalo, haeba nako ea hajoale e tšoana kapa e le ka tlase ho nako ea rekoto e fetileng, ho tla sebelisoa setempe sa nako sa rekoto e fetileng. Ka hona, haeba nako ea seva e khutlela morao ka nako, sekhetho se secha se ntse se tla boloka thepa ea increment.

tatellanoNomoro e sebelisetsoang lirekoto tse entsoeng ka millisecond e tšoanang. tatellanoNomoro e tla eketsoa ka 1 mabapi le keno e fetileng. Hobane the tatellanoNomoro e na le li-bits tse 64 ka boholo, joale ts'ebetsong ha ua lokela ho kena moeling oa palo ea litlaleho tse ka hlahisoang ka har'a millisecond e le 'ngoe.

Sebopeho sa li-identifiers tse joalo se ka utloahala se makatsa qalong. 'Mali ea sa tšepahaleng a ka ipotsa hore na ke hobane'ng ha nako e le karolo ea sekhetho. Lebaka ke hore melapo ea Redis e tšehetsa lipotso tse fapaneng ka ID. Kaha sekhetho se amahanngoa le nako eo rekoto e entsoeng ka eona, sena se etsa hore ho khonehe ho botsisisa linako. Re tla sheba mohlala o itseng ha re sheba taelo XRANGE.

Haeba ka lebaka le itseng mosebelisi a hloka ho hlakisa sekhetho sa hae, seo, mohlala, se amanang le sistimi e itseng ea kantle, re ka e fetisetsa ho taelo. XADD sebakeng sa * joalokaha ho bontšitsoe ka tlase:

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

Ka kopo hlokomela hore tabeng ena o tlameha ho beha leihlo hore ID e eketseha ka bouena. Mohlala oa rona, sekhetho se tlase ke "0-1", kahoo taelo e ke ke ea amohela sekhetho se seng se lekanang kapa ka tlase ho "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

Palo ea lirekoto ka molatsoana

Hoa khoneha ho fumana palo ea lirekoto molatsoaneng feela ka ho sebelisa taelo XLEN. Bakeng sa mohlala oa rona, taelo ena e tla khutlisa boleng bo latelang:

> XLEN somestream
(integer) 2

Lipotso tse fapaneng - XRANGE le XREVRANGE

Ho kopa data ka mefuta, re hloka ho hlakisa li-identifiers tse peli - qalo le pheletso ea sebaka. Sebaka se khutlisitsoeng se tla kenyelletsa likarolo tsohle, ho kenyelletsa le meeli. Hape ho na le li-identifiers tse peli tse khethehileng "-" le "+", ka tatellano e bolelang ntho e nyenyane ka ho fetisisa (rekoto ea pele) le e kholo ka ho fetisisa (rekoto ea ho qetela) e khethollang molapong. Mohlala o ka tlase o tla thathamisa likenyo tsohle tsa molapo.

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

Rekoto e 'ngoe le e 'ngoe e khutlisitsoeng e na le likarolo tse peli: sekhetho le lethathamo la lipara tsa bohlokoa. Re se re boletse hore li-record identifiers li amana le nako. Ka hona, re ka kopa letoto la nako e itseng. Leha ho le joalo, re ka hlakisa kopo eseng sekhetho se felletseng, empa ke nako ea Unix feela, re siea karolo e amanang le eona. tatellanoNomoro. Karolo e siiloeng ea sekhetho e tla hlophisoa ka bo eona ho zero qalong ea letoto le ho boleng bo phahameng bo ka khonehang qetellong ea sebaka. Ka tlase ke mohlala oa kamoo o ka kopang mefuta e fapaneng ea li-milliseconds tse peli.

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

Re na le keno e le 'ngoe feela mofuteng ona, leha ho le joalo ho li-data tsa sebele sephetho se khutlisitsoeng se ka ba seholo. Ka lebaka lena XRANGE e tšehetsa khetho ea COUNT. Ka ho hlakisa bongata, re ka fumana lirekoto tsa pele tsa N. Haeba re hloka ho fumana lirekoto tse latelang tsa N (pagination), re ka sebelisa ID ea ho qetela e fumanoeng, re e eketse tatellanoNomoro ka bonngwe ebe o botsa hape. A re shebeng sena mohlaleng o latelang. Re qala ho eketsa lintlha tse 10 ka XADD (ho nka hore mystream e ne e se e tletse likarolo tsa 10). Ho qala ho pheta-pheta ho fumana likarolo tse 2 ka taelo, re qala ka mefuta e felletseng empa ka COUNT e lekanang le 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"

Ho tsoela pele ho pheta-pheta le lintlha tse peli tse latelang, re hloka ho khetha ID ea ho qetela e amohetsoeng, ke hore 1519073279157-0, ebe re eketsa 1 ho tatellanoNomoro.
ID e hlahisoang, tabeng ena 1519073279157-1, joale e ka sebelisoa e le qalo e ncha ea likhang bakeng sa mohala o latelang. 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"

Joalo joalo. Hobane ho rarahana XRANGE ke O(log(N)) ho batla ebe O(M) ho khutlisa likarolo tsa M, ebe mohato o mong le o mong oa ho pheta o potlakile. Kahoo, ho sebelisoa XRANGE melapo e ka phetoa hantle.

sehlopha XREVRANGE ke e lekanang XRANGE, empa e khutlisetsa lielemente ka tatellano e fapaneng:

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

Ka kopo hlokomela hore taelo XREVRANGE e nka likhang tse fapaneng qala le ho emisa ka tatellano e fapaneng.

Ho bala likenyo tse ncha u sebelisa XREAD

Hangata mosebetsi o hlaha oa ho ingolisa ho molatsoana le ho amohela melaetsa e mecha feela. Khopolo ena e kanna ea utloahala e ts'oana le Redis Pub / Sub kapa e thibela Lethathamo la Redis, empa ho na le liphapang tsa mantlha mabapi le mokhoa oa ho sebelisa Redis Stream:

  1. Molaetsa o mong le o mong o mocha o fetisetsoa ho motho e mong le e mong ea ngolisitseng ka boiketsetso. Boitšoaro bona bo fapane le Lethathamo la Redis le thibelang, moo molaetsa o mocha o tla baloa feela ke motho a le mong ea ngolisitseng.
  2. Ha u ntse u le Redis Pub/Sub melaetsa eohle e lebetsoe 'me ha ho mohla e phehellang, ho Stream melaetsa eohle e bolokoa ka nako e sa lekanyetsoang (ntle le haeba moreki a etsa hore e hlakole ka ho hlaka).
  3. Redis Stream e u lumella ho khetholla phihlello ea melaetsa ka har'a molapo o le mong. Motho ea ngolisitseng ea itseng a ka bona nalane ea molaetsa oa hae feela.

U ka ingolisa ho khoele ebe u amohela melaetsa e mecha u sebelisa taelo XREAM. Ho batla ho rarahane ho feta XRANGE, kahoo re tla qala ka mehlala e bonolo pele.

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

Mohlala o ka holimo o bontša foromo e sa thibeleng XREAM. Hlokomela hore khetho ea COUNT ke ea boikhethelo. Ebile, khetho e le 'ngoe feela ea taelo e hlokahalang ke khetho ea STREAMS, e hlalosang lethathamo la melapo hammoho le sekhetho se phahameng se lumellanang. Re ngotse "STREAMS mystream 0" - re batla ho fumana lirekoto tsohle tsa mystream stream ka sekhetho se seholo ho feta "0-0". Joalokaha u ka bona mohlaleng, taelo e khutlisetsa lebitso la khoele hobane re ka ngolisa likhoele tse ngata ka nako e le 'ngoe. Re ka ngola, mohlala, "STREAMS mystream otherstream 0 0". Ka kopo hlokomela hore ka mor'a khetho ea STREAMS re hloka ho qala ka ho fana ka mabitso a melapo eohle e hlokahalang ebe re fana ka lethathamo la li-identifiers.

Ka mokhoa ona o bonolo taelo ha e etse letho le ikhethang ha le bapisoa le XRANGE. Leha ho le joalo, ntho e thahasellisang ke hore re ka reteleha habonolo XREAM ho taelo e thibelang, e hlakisang khang ea BLOCK:

> XREAD BLOCK 0 STREAMS mystream $

Mohlala o ka holimo, khetho e ncha ea BLOCK e hlalositsoe ka nako ea 0 milliseconds (sena se bolela ho ema ho sa feleng). Ho feta moo, ho e-na le ho fetisa sekhetho se tloaelehileng sa molapo oa mystream, ho ile ha fetisoa sekhetho se khethehileng $. Setsi sena se ikgethang se bolela seo XREAM e tlameha ho sebelisa boholo ba sekhetho ho mystream joalo ka sesupo. Kahoo re tla amohela feela melaetsa e mecha ho tloha ha re qala ho mamela. Ka litsela tse ling sena se tšoana le taelo ea Unix "mohatla -f".

Hlokomela hore ha re sebelisa khetho ea BLOCK ha ho hlokahale hore re sebelise sekhetho se khethehileng $. Re ka sebelisa sesupo sefe kapa sefe se teng sebakeng seo. Haeba sehlopha se ka sebeletsa kopo ea rona hang-hang ntle le ho thibela, se tla etsa joalo, ho seng joalo se tla thibela.

Ho thibela XREAM e ka boela ea mamela likhoele tse ngata ka nako e le 'ngoe, u hloka feela ho bolela mabitso a tsona. Tabeng ena, taelo e tla khutlisa tlaleho ea molapo oa pele o amohetseng data. Motho ea ngolisitseng oa pele ea thibetsoeng bakeng sa khoele e fanoeng o tla fumana data pele.

Lihlopha tsa Bareki

Mesebetsing e meng, re batla ho fokotsa phihlello ea ba ngolisitseng melaetsa ka har'a khoele e le 'ngoe. Mohlala moo sena se ka bang molemo ke mola oa melaetsa o nang le basebetsi ba tla amohela melaetsa e fapaneng ho tsoa khoeleng, e lumellang ts'ebetso ea melaetsa ho hola.

Haeba re nahana hore re na le ba ngolisitseng ba bararo C1, C2, C3 le khoele e nang le melaetsa 1, 2, 3, 4, 5, 6, 7, ebe melaetsa e tla fanoa joalo ka setšoantšong se ka tlase:

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

Ho finyella phello ena, Redis Stream e sebelisa mohopolo o bitsoang Consumer Group. Khopolo ena e tšoana le motho ea ngolisitseng pseudo, ea amohelang data ho tsoa molapong, empa ha e le hantle e sebeletsoa ke ba ngolisitseng ba bangata ka har'a sehlopha, ba fanang ka litiiso tse itseng:

  1. Molaetsa o mong le o mong o isoa ho ba ngolisitseng ba fapaneng ka har'a sehlopha.
  2. Ka har'a sehlopha, ba ngolisitseng ba khetholloa ka mabitso a bona, e leng khoele e sa utloeng bohloko. Haeba motho ea ngolisitseng a itokolla sehlopheng ka nakoana, a ka khutlisetsoa sehlopheng a sebelisa lebitso la hae le ikhethang.
  3. Sehlopha se seng le se seng sa Bareki se latela mohopolo oa "molaetsa oa pele o sa baloang". Ha motho ea ngolisitseng a kopa melaetsa e mecha, e ka amohela feela melaetsa eo ho seng mohla e kileng ea romelloa ho mang kapa mang ea ngolisitseng ka har'a sehlopha.
  4. Ho na le taelo ea ho tiisa ka ho hlaka hore molaetsa o sebetsitsoe ka katleho ke motho ea ngolisitseng. Ho fihlela taelo ena e bitsoa, ​​molaetsa o kopiloeng o tla lula o le maemong a "emetseng".
  5. Ka har'a Sehlopha sa Bareki, motho e mong le e mong ea ngolisitseng a ka kopa nalane ea melaetsa e rometsoeng ho eena, empa ha e so sebetsoe (maemong a "e ntseng e emetse")

Ka tsela e itseng, boemo ba sehlopha bo ka hlalosoa ka tsela e latelang:

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

Joale ke nako ea ho tloaelana le litaelo tsa mantlha tsa Sehlopha sa Bareki, e leng:

  • XGROUP se sebedisoang ho bopa, ho senya le ho laola dihlopha
  • XREADGROUP se sebedisoang ho bala ka bongata
  • XACK - taelo ena e lumella motho ea ngolisitseng hore a tšoaee molaetsa o sebetsitsoe ka katleho

Tlhahiso ea Sehlopha sa Bareki

Ha re nke hore mystream e se e ntse e le teng. Ebe taelo ea ho theha sehlopha e tla shebahala tjena:

> XGROUP CREATE mystream mygroup $
OK

Ha re theha sehlopha, re tlameha ho fetisa sekhetho, ho qala moo sehlopha se tla amohela melaetsa. Haeba re batla ho fumana melaetsa eohle e mecha, joale re ka sebelisa sekhetho se khethehileng $ (joalo ka mohlala oa rona o ka holimo). Haeba u hlakisa 0 sebakeng sa sekhetho se ikhethileng, melaetsa eohle e khoeleng e tla fumaneha ho sehlopha.

Kaha joale sehlopha se thehiloe, re ka qala hang-hang ho bala melaetsa ka ho sebelisa taelo XREADGROUP. Taelo ena e tšoana haholo le XREAM 'me e tšehetsa khetho ea BLOCK ea boikhethelo. Leha ho le joalo, ho na le khetho e hlokahalang ea GROUP e tlamehang ho hlalosoa ka linako tsohle ka likhang tse peli: lebitso la sehlopha le lebitso la motho ea ngolisitseng. Khetho ea COUNT e boetse e tšehetsoa.

Pele re bala khoele, ha re beheng melaetsa e meng moo:

> 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

Joale ha re leke ho bala molatsoana ona ka sehlopha:

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

Taelo e ka holimo e baleha ka tsela e latelang:

"'Na, ea ngolisitseng Alice, setho sa sehlopha sa ka, ke batla ho bala molaetsa o le mong ho tsoa ho mystream o so kang oa fetisetsoa ho mang kapa mang pele."

Nako le nako ha motho ea ngolisitseng a etsa ts'ebetso sehlopheng, e tlameha ho fana ka lebitso la eona, e ikhetholla ka ho khetheha ka har'a sehlopha. Ho na le ntlha e 'ngoe ea bohlokoa haholo taelong e ka holimo - sekhetho se khethehileng ">". Sekhetho sena se ikhethileng se sefa melaetsa, se siea feela e so kang e tlisoa.

Hape, maemong a ikhethileng, o ka hlakisa sekhetho sa 'nete joalo ka 0 kapa sekhetho sefe kapa sefe se nepahetseng. Tabeng ena taelo XREADGROUP e tla u khutlisetsa nalane ea melaetsa e nang le boemo ba "e emetse" e rometsoeng ho motho ea ngolisitseng (Alice) empa ha e so amoheloe ho sebelisoa taelo. XACK.

Re ka leka boitšoaro bona ka ho hlakisa hang-hang ID 0, ntle le khetho COUNT. Re tla bona molaetsa o le mong feela o emetseng, ke hore, molaetsa oa apole:

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

Leha ho le joalo, haeba re netefatsa hore molaetsa o sebetsitsoe ka katleho, ha o sa tla hlola o hlahisoa:

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

Joale ke nako ea Bob ea ho bala ho hong:

> 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, setho sa sehlopha sa ka, o ile a kopa melaetsa e sa feteng e 'meli. Taelo e tlaleha feela melaetsa e sa romelloang ka lebaka la sekhetho se ikhethileng ">". Joalokaha u ka bona, molaetsa "apole" o ke ke oa bontšoa kaha o se o isitsoe ho Alice, kahoo Bob o amohela "orange" le "strawberry".

Ka tsela ena, Alice, Bob, le mang kapa mang ea ngolisitseng sehlopha a ka bala melaetsa e fapaneng ho tsoa molapong o le mong. Ba ka boela ba bala nalane ea bona ea melaetsa e sa sebetsoang kapa ba tšoaea melaetsa e sebetsitsoe.

Ho na le lintho tse 'maloa tseo u lokelang ho li hopola:

  • Hang ha motho ea ngolisitseng a nka molaetsa e le taelo XREADGROUP, molaetsa ona o kena sebakeng sa "e ntseng e emetse" mme o abeloa motho ea ngolisitseng ea itseng. Bangoli ba sehlopha ba bang ba ke ke ba khona ho bala molaetsa ona.
  • Ba ngolisitseng ba bōptjoa ka boits'oaro ha ho buuoa ka lekhetlo la pele, ha ho hlokahale hore u ba bōpe ka mokhoa o hlakileng.
  • Ka thuso ea XREADGROUP o ka bala melaetsa e tsoang likhoeleng tse ngata tse fapaneng ka nako e le 'ngoe, leha ho le joalo hore sena se sebetse u hloka ho qala lihlopha tse nang le lebitso le tšoanang bakeng sa khoele ka 'ngoe u sebelisa XGROUP

Ho hlaphoheloa ka mor'a ho hlōleha

Motho ea ngolisitseng a ka hlaphoheloa ho hloleha 'me a bala hape lethathamo la melaetsa ea hae ka boemo ba "emetseng". Leha ho le joalo, lefatšeng la 'nete, ba ngolisitseng ba ka qetella ba hloleha. Ho etsahala'ng ka melaetsa e tsitsitseng ea motho ea ngolisitseng haeba motho ea ngolisitseng a sa khone ho hlaphoheloa ka mor'a ho hlōleha?
Consumer Group e fana ka tšobotsi e sebelisetsoang maemo a joalo - ha o hloka ho fetola mong'a melaetsa.

Ntho ea pele eo u lokelang ho e etsa ke ho letsetsa taelo XPENDING, e bonts'ang melaetsa eohle e sehlopheng ka boemo ba "pending". Ka mokhoa oa eona o bonolo, taelo e bitsoa ka likhang tse peli feela: lebitso la khoele le lebitso la sehlopha:

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

Sehlopha se bontšitse palo ea melaetsa e sa sebetsoang bakeng sa sehlopha sohle le bakeng sa motho e mong le e mong ea ngolisitseng. Re na le Bob feela ea nang le melaetsa e 'meli e hlahelletseng hobane molaetsa o le mong feela oo Alice a o kopileng o tiisitsoe ka oona XACK.

Re ka kopa lintlha tse ling re sebelisa likhang tse ling:

XPENDING {key} {groupname} [{start-id} {end-id} {count} [{consumer-name}]]
{start-id} {end-id} - mefuta e fapaneng ea li-identifier (o ka sebelisa "-" le "+")
{count} — palo ea liteko tsa ho fihla
{consumer-name} - lebitso la sehlopha

> 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

Joale re na le lintlha tsa molaetsa o mong le o mong: ID, lebitso la ba ngolisitseng, nako e sa sebetseng ka li-milliseconds mme qetellong palo ea liteko tsa ho tlisa. Re na le melaetsa e 'meli e tsoang ho Bob' me e bile 74170458 milliseconds, hoo e ka bang lihora tse 20.

Ka kopo hlokomela hore ha ho motho ea re thibelang ho hlahloba hore na litaba tsa molaetsa li ne li le joang ka ho sebelisa XRANGE.

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

Re tlameha feela ho pheta sekhetho se le seng habeli likhang. Kaha joale re na le mohopolo, Alice a ka etsa qeto ea hore kamora lihora tse 20 tsa ho phomola, mohlomong Bob a ke ke a fola, 'me ke nako ea ho botsa melaetsa eo le ho qala ho e sebetsa bakeng sa Bob. Bakeng sa sena re sebelisa taelo XCLAIM:

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

Re sebelisa taelo ena, re ka fumana molaetsa "osele" o e-s'o sebetsoe ka ho fetola mong'a lona ho {consumer}. Leha ho le joalo, re ka fana ka bonyane ba nako ea ho se sebetse {min-idle-time}. Sena se thusa ho qoba boemo boo bareki ba babeli ba lekang ho fetola mong'a melaetsa e tšoanang ka nako e le 'ngoe:

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

Moreki oa pele o tla seta nako ea ho theola bocha ebe o eketsa k'haonta ea thepa. Kahoo moreki oa bobeli a ke ke a khona ho e kopa.

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

Molaetsa o ile oa tsekoa ka katleho ke Alice, ea seng a khona ho sebetsana le molaetsa le ho o amohela.

Ho tsoa mohlaleng o ka holimo, u ka bona hore kopo e atlehileng e khutlisetsa litaba tsa molaetsa ka boeona. Leha ho le joalo, sena ha se hlokahale. Khetho ea JUSTID e ka sebelisoa ho khutlisa li-ID tsa molaetsa feela. Sena se na le thuso haeba o sa thahaselle lintlha tsa molaetsa mme o batla ho eketsa ts'ebetso ea sistimi.

Delivery counter

Khaontara eo u e bonang ho sephetho XPENDING ke palo ea ho tsamaisoa ha molaetsa ka mong. Khaontara e joalo e eketsoa ka mekhoa e 'meli: ha molaetsa o kopuoa ka katleho XCLAIM kapa ha mohala o sebedisoa XREADGROUP.

Ho tloaelehile hore melaetsa e meng e romeloe hangata. Ntho e ka sehloohong ke hore melaetsa eohle e qetella e sebetsoa. Ka linako tse ling mathata a hlaha ha o sebetsana le molaetsa hobane molaetsa ka boeona o senyehile, kapa ho sebetsa ha molaetsa ho baka phoso ho khoutu ea mohlokomeli. Tabeng ena, ho ka etsahala hore ha ho motho ea tla khona ho sebetsana le molaetsa ona. Kaha re na le k'haontareng ea ho reka thepa, re ka sebelisa khaonta ena ho bona maemo a joalo. Ka hona, hang ha palo ea thomello e fihla ho palo e phahameng eo u e hlalosang, mohlomong e ka ba bohlale ho beha molaetsa o joalo khoeleng e 'ngoe le ho romela tsebiso ho mookameli oa tsamaiso.

Khoele State

sehlopha XINFO e sebelisoang ho kopa tlhahisoleseding e fapaneng mabapi le khoele le lihlopha tsa eona. Ka mohlala, taelo ea motheo e shebahala tjena:

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

Taelo e ka holimo e bontša lintlha tse akaretsang mabapi le molapo o boletsoeng. Joale ho na le mohlala o rarahaneng haholoanyane:

> 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

Taelo e ka holimo e bontša lintlha tse akaretsang bakeng sa lihlopha tsohle tsa khoele e boletsoeng

> 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

Taelo e ka holimo e bonts'a tlhahisoleseling bakeng sa ba ngolisitseng bohle ba molapo o boletsoeng le sehlopha.
Haeba u lebala syntax ea taelo, botsa feela taelo ka boeona bakeng sa thuso:

> 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

Lisebelisoa tse ngata ha li batle ho bokella data ho ea ho sa feleng. Hangata ho molemo ho ba le palo e kholo ea melaetsa e lumelletsoeng ka khoele. Maemong a mang, ho molemo ho tlosa melaetsa eohle ho tloha khoele ho ea lebenkeleng le leng le phehellang ha boholo bo boletsoeng bo fihlile. O ka fokotsa boholo ba molapo o sebelisa MAXLEN parameter taelong 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"

Ha u sebelisa MAXLEN, lirekoto tsa khale li hlakoloa ka bo eona ha li fihla bolelele bo itseng, kahoo molapo o na le boholo bo sa feleng. Leha ho le joalo, ho pruning tabeng ena ha ho etsahale ka tsela e sebetsang ka ho fetisisa mohopolong oa Redis. U ka ntlafatsa boemo ka tsela e latelang:

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

The ~ khang mohlaleng o ka holimo e bolela hore ha ho hlokahale hore re behe moeli oa bolelele ba molapo ho boleng bo itseng. Mohlala oa rona, ena e ka ba palo efe kapa efe e kholo ho feta kapa e lekanang le 1000 (mohlala, 1000, 1010, kapa 1030). Re sa tsoa hlakisa ka ho hlaka hore re batla hore molaetsa oa rona o boloke bonyane lirekoto tse 1000. Sena se etsa hore taolo ea memori e atlehe haholoanyane ka hare ho Redis.

Ho boetse ho na le sehlopha se arohaneng XTRIM, e etsang ntho e tšoanang:

> XTRIM mystream MAXLEN 10

> XTRIM mystream MAXLEN ~ 10

Ho boloka le ho pheta-pheta

Redis Stream e kopitsoa ka mokhoa o ts'oanang ho li-node tsa makhoba 'me e bolokiloe ho lifaele tse kang AOF (setšoantšo sa lintlha tsohle) le RDB (log ea mesebetsi eohle ea ho ngola). Katiso ea boemo ba Consumer Groups e boetse e tšehetsoa. Ka hona, haeba molaetsa o le boemong bo "emetseng" ho node e kholo, joale ho li-node tsa makhoba molaetsa ona o tla ba le boemo bo tšoanang.

Ho tlosa likarolo tsa motho ka mong molatsoaneng

Ho na le taelo e khethehileng ea ho hlakola melaetsa XDEL. Taelo e fumana lebitso la khoele e lateloang ke li-ID tsa molaetsa tse lokelang ho hlakoloa:

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

Ha u sebelisa taelo ena, u lokela ho ela hloko hore memori ea sebele e ke ke ea lokolloa hang-hang.

Melatsoana e bolelele ba zero

Phapang pakeng tsa melapo le mekhoa e meng ea data ea Redis ke hore ha lisebelisoa tse ling tsa data li se li se na likarolo tse ka hare ho tsona, e le phello e lehlakoreng, sebopeho sa data ka boeona se tla tlosoa mohopolong. Kahoo, mohlala, sete e hlophisitsoeng e tla tlosoa ka ho feletseng ha mohala oa ZREM o tlosa ntho ea ho qetela. Ho e-na le hoo, likhoele li lumelloa ho lula mohopolong le ntle le ho ba le likarolo leha e le life ka hare.

fihlela qeto e

Redis Stream e loketse ho theha barekisi ba melaetsa, mela ea melaetsa, ho rema lifate ka bonngoe, le litsamaiso tsa meqoqo tse bolokang nalane.

Joalokaha ke kile ka bolela Niklaus Wirth, mananeo ke algorithms le libopeho tsa data, 'me Redis e se e ntse e u fa bobeli.

Source: www.habr.com

Eketsa ka tlhaloso