Redis Stream - kudalirika komanso kusinthika kwamakina anu otumizira mauthenga

Redis Stream - kudalirika komanso kusinthika kwamakina anu otumizira mauthenga

Redis Stream ndi mtundu watsopano wa data womwe udayambitsidwa ku Redis wokhala ndi mtundu wa 5.0
Mwachidziwitso, Redis Stream ndi Mndandanda womwe mungathe kuwonjezera zolemba. Chilichonse chili ndi chizindikiritso chapadera. Mwachikhazikitso, ID imapangidwa yokha ndipo imakhala ndi sitampu yanthawi. Chifukwa chake, mutha kufunsira zolemba zambiri pakapita nthawi, kapena kulandira zatsopano zikafika pamtsinje, monga lamulo la Unix "mchira -f" limawerenga fayilo ya chipika ndikuyimitsa podikirira deta yatsopano. Dziwani kuti makasitomala ambiri amatha kumvetsera ulusi nthawi imodzi, monga momwe njira zambiri za "tail -f" zimatha kuwerenga fayilo nthawi imodzi popanda kutsutsana.

Kuti timvetsetse zabwino zonse zamtundu watsopano wa data, tiyeni tiwone mwachangu zida zomwe zakhalapo kale za Redis zomwe zimafanizira pang'ono magwiridwe antchito a Redis Stream.

Redis PUB/SUB

Redis Pub/Sub ndi njira yosavuta yotumizirana mameseji yomwe idapangidwa kale mu sitolo yanu yamtengo wapatali. Komabe, kuphweka kumabwera pamtengo wake:

  • Ngati wofalitsayo pazifukwa zina akulephera, ndiye kuti amataya onse olembetsa
  • Wofalitsa ayenera kudziwa adilesi yeniyeni ya onse omwe adalembetsa
  • Wosindikiza akhoza kudzaza olembetsa ake ndi ntchito ngati deta isindikizidwa mwachangu kuposa momwe imakonzedwa
  • Uthengawu umachotsedwa mu buffer ya wosindikizayo atangofalitsidwa, mosasamala kanthu za kuchuluka kwa olembetsa omwe adatumizidwa komanso kuti adakwanitsa bwanji kukonza uthengawu.
  • Onse olembetsa adzalandira uthengawo nthawi imodzi. Olembetsa nawonso ayenera kuvomereza mwanjira ina pakati pawo pa dongosolo la kukonza uthenga womwewo.
  • Palibe njira yodziwira kuti wolembetsa wakonza uthenga wabwino. Ngati wolembetsa alandira uthenga ndikuwonongeka panthawi yokonza, wofalitsayo sangadziwe za izo.

Redis List

Redis List ndi dongosolo la deta lomwe limathandizira kuletsa malamulo owerengera. Mukhoza kuwonjezera ndi kuwerenga mauthenga kuyambira pachiyambi kapena kumapeto kwa mndandanda. Kutengera kapangidwe kake, mutha kupanga stack kapena mzere wabwino pamakina anu ogawidwa, ndipo nthawi zambiri izi zimakhala zokwanira. Kusiyana kwakukulu kuchokera ku Redis Pub/Sub:

  • Uthenga umaperekedwa kwa kasitomala mmodzi. Woyang'anira woyamba wotsekedwa adzalandira deta poyamba.
  • Clint ayenera kuyambitsa ntchito yowerengera uthenga uliwonse. List sadziwa chilichonse chokhudza makasitomala.
  • Mauthenga amasungidwa mpaka wina awerenge kapena kuwachotsa mwatsatanetsatane. Ngati mukonza seva ya Redis kuti isunthire deta ku disk, ndiye kuti kudalirika kwa dongosolo kumakula kwambiri.

Mau oyamba a Stream

Kuwonjezera polowera kumtsinje

timu Mtengo wa XADD imawonjezera kulowa kwatsopano kumtsinje. Mbiri si chingwe, imakhala ndi mapeya amodzi kapena angapo amtengo wapatali. Chifukwa chake, cholowa chilichonse chakonzedwa kale ndipo chikufanana ndi mawonekedwe a fayilo ya CSV.

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

Mu chitsanzo pamwambapa, timawonjezera minda iwiri kumtsinje ndi dzina (kiyi) "mystream": "sensor-id" ndi "kutentha" ndi mfundo "1234" ndi "19.8", motero. Monga mkangano wachiwiri, lamuloli limatenga chizindikiritso chomwe chidzaperekedwa polowera - chozindikiritsa ichi chimazindikiritsa mwapadera kulowa kulikonse mumtsinje. Komabe, pamenepa tadutsa * chifukwa tikufuna Redis kutipangira ID yatsopano. ID iliyonse yatsopano idzawonjezeka. Chifukwa chake, cholowa chatsopano chilichonse chidzakhala ndi chizindikiritso chapamwamba poyerekeza ndi zolemba zam'mbuyomu.

Mtundu wa chizindikiritso

ID yolowera idabwezedwa ndi lamulo Mtengo wa XADD, ili ndi magawo awiri:

{millisecondsTime}-{sequenceNumber}

millisecondsTime - Nthawi ya Unix mu milliseconds (nthawi ya seva ya Redis). Komabe, ngati nthawi yapano ili yofanana kapena yocheperapo kuposa nthawi yojambulira m'mbuyomu, ndiye kuti nthawi yojambulira yapitayi imagwiritsidwa ntchito. Chifukwa chake, ngati nthawi ya seva ibwerera m'mbuyo, chizindikiritso chatsopano chidzasungabe katundu wowonjezera.

sequenceNumber amagwiritsidwa ntchito pamarekodi opangidwa mu millisecond yomweyo. sequenceNumber idzawonjezeka ndi 1 yokhudzana ndi zomwe zalowa kale. Chifukwa ndi sequenceNumber ndi 64 bits mu kukula, ndiye pochita simuyenera kuthamanga mu malire pa chiwerengero cha zolemba zomwe zingathe kupangidwa mkati mwa millisecond imodzi.

Maonekedwe a zizindikiritso zotere angawoneke achilendo pakuwona koyamba. Wowerenga wosakhulupirira akhoza kudabwa chifukwa chake nthawi ili mbali ya chizindikiritso. Chifukwa chake ndikuti mitsinje ya Redis imathandizira mafunso osiyanasiyana ndi ID. Popeza kuti chizindikiritsocho chimalumikizidwa ndi nthawi yomwe cholemberacho chinapangidwa, izi zimapangitsa kuti zitheke kufunsa zanthawi. Tiwona chitsanzo chapadera tikayang'ana pa lamulo XRANGE.

Ngati pazifukwa zina wogwiritsa ntchito akufunika kufotokoza chizindikiritso chake, chomwe, mwachitsanzo, chikugwirizana ndi machitidwe ena akunja, ndiye kuti tikhoza kuchipereka ku lamulo. Mtengo wa XADD m'malo mwa * monga momwe ziliri pansipa:

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

Chonde dziwani kuti pamenepa muyenera kuyang'anira ID ikuwonjezeka nokha. Mu chitsanzo chathu, chizindikiritso chocheperako ndi "0-1", kotero lamulo silingavomereze chizindikiritso china chofanana kapena chochepera "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

Chiwerengero cha zolemba pamtsinje uliwonse

N'zotheka kupeza chiwerengero cha zolemba mumtsinje pogwiritsa ntchito lamulo XLEN. Kwa chitsanzo chathu, lamulo ili libweza mtengo wotsatirawu:

> XLEN somestream
(integer) 2

Mafunso osiyanasiyana - XRANGE ndi XREVRANGE

Kuti tipemphe deta mosiyanasiyana, tiyenera kufotokoza zozindikiritsa ziwiri - chiyambi ndi mapeto a mndandanda. Mtundu wobwerera udzaphatikizapo zinthu zonse, kuphatikizapo malire. Palinso zizindikiritso ziwiri zapadera "-" ndi "+", motsatana kutanthauza chaching'ono (mbiri yoyamba) ndi chizindikiritso chachikulu (chomaliza) pamtsinje. Chitsanzo chili m'munsimu chilemba zonse zomwe zatuluka.

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

Mbiri iliyonse yobwezedwa ili ndi zinthu ziwiri: chozindikiritsa ndi mndandanda wamagulu awiri amtengo wapatali. Tanena kale kuti zozindikiritsa zolembera zimagwirizana ndi nthawi. Chifukwa chake, titha kupempha kusiyanasiyana kwa nthawi inayake. Komabe, titha kufotokozera mu pempho osati chizindikiritso chonse, koma nthawi ya Unix yokha, kusiya gawo lokhudzana ndi sequenceNumber. Gawo losiyidwa la chizindikiritso lizingokhazikitsidwa kukhala ziro kumayambiriro kwa mtunda ndi kuchuluka komwe kungathe kumapeto kwa mzerewu. Pansipa pali chitsanzo cha momwe mungapemphe ma milliseconds awiri.

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

Tili ndi cholowera chimodzi chokha pamndandanda uwu, komabe mumaseti enieni a data zotsatira zomwe zabwezedwa zitha kukhala zazikulu. Pachifukwa ichi XRANGE imathandizira kusankha COUNT. Pofotokoza kuchuluka kwake, titha kupeza zolemba zoyambirira za N. Ngati tifunika kupeza zolemba zotsatila za N (pagination), titha kugwiritsa ntchito ID yomaliza yolandila, yonjezerani sequenceNumber m'modzi ndikufunsanso. Tiyeni tione izi m’chitsanzo chotsatirachi. Timayamba kuwonjezera zinthu 10 ndi Mtengo wa XADD (poganiza kuti mystream idadzazidwa kale ndi zinthu 10). Kuti tiyambe kubwereza kupeza zinthu ziwiri pa lamulo lililonse, timayamba ndi mndandanda wonse koma ndi COUNT yofanana ndi 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"

Kuti tipitilize kubwereza ndi zinthu ziwiri zotsatirazi, tiyenera kusankha ID yomaliza yomwe talandira, mwachitsanzo 1519073279157-0, ndikuwonjezera 1 ku sequenceNumber.
Chidziwitso chotsatira, pankhaniyi 1519073279157-1, chitha kugwiritsidwa ntchito ngati chiyambi chatsopano chamkangano woyimbanso foni yotsatira. 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"

Ndi zina zotero. Chifukwa zovuta XRANGE ndi O(logi(N)) kuti mufufuze ndiyeno O(M) kubweza M element, ndiye kuti kubwereza kulikonse kumakhala mwachangu. Choncho, kugwiritsa ntchito XRANGE mitsinje ikhoza kubwerezedwa bwino.

timu XREVRANGE ndi ofanana XRANGE, koma amabwezeretsa zinthuzo mosinthana:

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

Chonde dziwani kuti lamulo XREVRANGE zimatenga mikangano yamitundu yosiyanasiyana kuyambira ndikuyimitsa motsatana.

Kuwerenga zatsopano pogwiritsa ntchito XREAD

Nthawi zambiri ntchito imakhala yolembetsa kumtsinje ndikulandira mauthenga atsopano okha. Lingaliro ili lingawoneke ngati lofanana ndi Redis Pub/Sub kapena kutsekereza Redis List, koma pali kusiyana kwakukulu momwe mungagwiritsire ntchito Redis Stream:

  1. Uthenga watsopano uliwonse umaperekedwa kwa aliyense wolembetsa mwachisawawa. Khalidweli ndi losiyana ndi kutsekereza Redis List, pomwe uthenga watsopano ungowerengedwa ndi wolembetsa m'modzi.
  2. Muli mu Redis Pub/Sub mauthenga onse amaiwala ndipo sanapitirire, mu Stream mauthenga onse amasungidwa mpaka kalekale (pokhapokha ngati kasitomala ayambitsa kufufutidwa).
  3. Redis Stream imakulolani kuti musiyanitse mwayi wopeza mauthenga mkati mwa mtsinje umodzi. Wolembetsa mwapadera amatha kuwona mbiri yawo yauthenga.

Mutha kulembetsa ku ulusi ndikulandila mauthenga atsopano pogwiritsa ntchito lamulo XREAD. Ndizovuta pang'ono kuposa XRANGE, kotero tiyamba ndi zitsanzo zosavuta poyamba.

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

Chitsanzo pamwambapa chikuwonetsa mawonekedwe osatsekereza XREAD. Dziwani kuti njira COUNT ndiyosasankha. M'malo mwake, lamulo lokhalo lofunikira ndi njira ya STREAMS, yomwe imatchula mndandanda wa mitsinje pamodzi ndi chizindikiritso chokwanira. Tinalemba "STREAMS mystream 0" - tikufuna kulandira zolemba zonse za mystream stream ndi chizindikiritso chachikulu kuposa "0-0". Monga momwe mukuonera kuchokera ku chitsanzo, lamuloli limabwezeretsa dzina la ulusi chifukwa tikhoza kulembetsa ulusi wambiri nthawi imodzi. Tikhoza kulemba, mwachitsanzo, "STREAMS mystream otherstream 0 0". Chonde dziwani kuti mukatha kusankha STREAMS tikuyenera kupereka kaye mayina amitsinje yofunikira kenako ndi mndandanda wazizindikiro.

Mwanjira yosavuta iyi lamulo silichita chilichonse chapadera poyerekeza XRANGE. Komabe, chosangalatsa ndichakuti titha kutembenuka mosavuta XREAD ku lamulo loletsa, kufotokoza mkangano wa BLOCK:

> XREAD BLOCK 0 STREAMS mystream $

Muchitsanzo chapamwambachi, njira yatsopano ya BLOCK yatchulidwa ndi kutha kwa 0 milliseconds (izi zikutanthauza kudikirira kosatha). Komanso, m'malo modutsa chizindikiritso chanthawi zonse cha mystream, chizindikiritso chapadera $ chinaperekedwa. Chizindikiritso chapadera ichi chikutanthauza kuti XREAD ayenera kugwiritsa ntchito chizindikiritso chachikulu mu mystream monga chizindikiritso. Chifukwa chake tingolandila mauthenga atsopano kuyambira pomwe tidayamba kumvetsera. Mwanjira zina izi ndizofanana ndi lamulo la Unix "mchira -f".

Dziwani kuti mukamagwiritsa ntchito njira ya BLOCK sitifunika kugwiritsa ntchito chizindikiritso chapadera $. Titha kugwiritsa ntchito chizindikiritso chilichonse chomwe chili mumtsinje. Ngati gulu lingatumikire pempho lathu nthawi yomweyo popanda kuletsa, litero, apo ayi liletsa.

Kutsekereza XREAD mutha kumveranso ulusi wambiri nthawi imodzi, muyenera kungotchula mayina awo. Pankhaniyi, lamulo lidzabwezera mbiri ya mtsinje woyamba amene analandira deta. Wolembetsa woyamba woletsedwa pa ulusi womwe wapatsidwa alandila data kaye.

Magulu Ogula

Muzochita zina, tikufuna kuchepetsa olembetsa kuti azitha kupeza mauthenga mkati mwa ulusi umodzi. Chitsanzo chomwe izi zingakhale zothandiza ndi mzere wa uthenga wokhala ndi ogwira ntchito omwe adzalandira mauthenga osiyanasiyana kuchokera ku ulusi, kulola kuti mauthenga asinthe kukula.

Ngati tikuganiza kuti tili ndi olembetsa atatu C1, C2, C3 ndi ulusi womwe uli ndi mauthenga 1, 2, 3, 4, 5, 6, 7, ndiye kuti mauthengawo adzatumizidwa monga momwe zilili pansipa:

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

Kuti akwaniritse izi, Redis Stream amagwiritsa ntchito lingaliro lotchedwa Consumer Group. Lingaliro ili ndi lofanana ndi wolembetsa wa pseudo, yemwe amalandira deta kuchokera kumtsinje, koma amatumizidwa ndi olembetsa angapo mkati mwa gulu, kupereka zitsimikizo zina:

  1. Uthenga uliwonse umaperekedwa kwa olembetsa osiyana mkati mwa gulu.
  2. Mkati mwa gulu, olembetsa amadziwika ndi dzina lawo, lomwe ndi chingwe chokhudzidwa. Ngati wolembetsa atasiya gulu kwakanthawi, akhoza kubwezeretsedwanso kugululo pogwiritsa ntchito dzina lake lapadera.
  3. Gulu Lililonse la Ogula limatsatira lingaliro la "uthenga woyamba wosawerengedwa". Wolembetsa akapempha mauthenga atsopano, amatha kulandira mauthenga omwe sanaperekedwepo kwa aliyense wolembetsa mkati mwa gululo.
  4. Pali lamulo lotsimikizira momveka bwino kuti uthengawo unakonzedwa bwino ndi wolembetsa. Mpaka lamuloli liyitanidwe, uthenga womwe wafunsidwa ukhalabe "podikirira".
  5. M'gulu la Consumer Group, wolembetsa aliyense atha kupempha mbiri ya mauthenga omwe adatumizidwa kwa iye, koma omwe sanasinthidwebe (panthawi yoyembekezera)

Mwanjira ina, mkhalidwe wa gulu ukhoza kufotokozedwa motere:

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

Tsopano ndi nthawi yoti mudziwe malamulo akuluakulu a Consumer Group, omwe ndi:

  • Mtengo wa XGROUP amagwiritsidwa ntchito popanga, kuwononga ndi kuyang'anira magulu
  • Mtengo wa XREADGROUP ankakonda kuwerenga modutsa pagulu
  • XACK - lamuloli limalola wolembetsa kuti alembe uthengawo ngati wakonzedwa bwino

Kupanga Gulu la Ogula

Tiyerekeze kuti mystream ilipo kale. Kenako lamulo lopanga gulu lidzawoneka ngati:

> XGROUP CREATE mystream mygroup $
OK

Popanga gulu, tiyenera kudutsa chizindikiritso, kuyambira pomwe gulu lidzalandira mauthenga. Ngati tikungofuna kulandira mauthenga onse atsopano, ndiye kuti tikhoza kugwiritsa ntchito chizindikiritso chapadera $ (monga chitsanzo chathu pamwambapa). Ngati mutchula 0 m'malo mwa chizindikiritso chapadera, ndiye kuti mauthenga onse mu ulusi adzakhalapo kwa gulu.

Tsopano popeza gululo lapangidwa, tikhoza kuyamba kuwerenga mauthenga pogwiritsa ntchito lamulo Mtengo wa XREADGROUP. Lamulo ili likufanana kwambiri ndi XREAD ndipo imathandizira njira yosankha BLOCK. Komabe, pali njira yofunikira ya GROUP yomwe iyenera kutchulidwa nthawi zonse ndi zifukwa ziwiri: dzina la gulu ndi dzina lolembetsa. Njira COUNT imathandizidwanso.

Tisanawerenge ulusi, tiyeni tiyikepo mauthenga:

> 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

Tsopano tiyeni tiyese kuwerenga mtsinje uwu kupyolera mu gulu:

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

Lamulo lomwe lili pamwambali limawerengedwa motere:

"Ine, wolembetsa Alice, membala wa gulu langa, ndikufuna kuwerenga uthenga umodzi wochokera kumtsinje wanga womwe sunaperekedwepo kwa wina aliyense."

Nthawi iliyonse wolembetsa akachita opareshoni pagulu, ayenera kupereka dzina lake, kudzizindikiritsa yekha mkati mwa gululo. Pali mfundo ina yofunika kwambiri mu lamulo ili pamwambapa - chozindikiritsa chapadera ">". Chizindikiritso chapaderachi chimasefa mauthenga, ndikusiya okhawo omwe sanatumizidwepo.

Komanso, muzochitika zapadera, mutha kufotokoza chizindikiritso chenicheni monga 0 kapena chizindikiritso china chilichonse chovomerezeka. Pamenepa lamulo Mtengo wa XREADGROUP adzakubwezerani mbiri ya mauthenga omwe ali ndi "odikira" omwe adaperekedwa kwa olembetsa (Alice) koma sanavomerezedwebe kugwiritsa ntchito lamuloli. XACK.

Titha kuyesa izi pofotokoza nthawi yomweyo ID 0, popanda mwayi COUNT. Tingowona uthenga umodzi wodikirira, womwe ndi uthenga wa apulo:

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

Komabe, ngati titsimikizira kuti uthengawo wakonzedwa bwino, sudzawonetsedwanso:

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

Tsopano ndi nthawi ya Bob kuti awerenge chinachake:

> 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, membala wa gulu langa, sanapemphe mauthenga oposa awiri. Lamuloli limangonena mauthenga omwe sanatumizidwe chifukwa cha chizindikiritso chapadera ">". Monga mukuonera, uthenga "apulo" sudzawonetsedwa popeza waperekedwa kale kwa Alice, kotero Bob amalandira "lalanje" ndi "sitiroberi".

Mwanjira iyi, Alice, Bob, ndi wina aliyense wolembetsa kugululi amatha kuwerenga mauthenga osiyanasiyana kuchokera kumtsinje womwewo. Athanso kuwerenga mbiri yawo ya mauthenga osasinthidwa kapena kuyika mauthenga ngati akonzedwa.

Pali zinthu zingapo zomwe muyenera kukumbukira:

  • Mwamsanga pamene wolembetsa amawona kuti uthengawo ndi lamulo Mtengo wa XREADGROUP, uthenga uwu umapita ku "podikira" ndipo umaperekedwa kwa olembetsawo. Olembetsa m'magulu ena sangathe kuwerenga uthengawu.
  • Olembetsa amangopangidwa pokhapokha atatchulidwa koyamba, palibe chifukwa chowapangira momveka bwino.
  • Ndi chithandizo cha Mtengo wa XREADGROUP mutha kuwerenga mauthenga ochokera ku ulusi wosiyanasiyana nthawi imodzi, komabe kuti izi zitheke muyenera kupanga magulu okhala ndi dzina lomwelo pa ulusi uliwonse pogwiritsa ntchito Mtengo wa XGROUP

Kuchira pambuyo kulephera

Wolembetsa akhoza kuchira kulephera ndikuwerenganso mndandanda wa mauthenga omwe ali ndi "poyembekezera". Komabe, m'dziko lenileni, olembetsa amatha kulephera. Kodi chimachitika ndi chiyani kwa olembetsa omwe adakakamira mauthenga ngati olembetsa sangathe kuchira chifukwa chakulephera?
Consumer Group imapereka mawonekedwe omwe amagwiritsidwa ntchito pazinthu zotere - mukafunika kusintha eni ake mauthenga.

Chinthu choyamba chimene muyenera kuchita ndikuyitana lamulo XPENDING, yomwe imawonetsa mauthenga onse omwe ali mugulu omwe ali ndi udindo "podikira". Mwachidule chake, lamuloli limatchedwa ndi mfundo ziwiri zokha: dzina la ulusi ndi dzina la gulu:

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

Gululi likuwonetsa kuchuluka kwa mauthenga omwe sanasinthidwe kwa gulu lonse komanso kwa aliyense wolembetsa. Tili ndi Bob okha omwe ali ndi mauthenga awiri odziwika bwino chifukwa uthenga wokha womwe Alice adapempha udatsimikiziridwa nawo XACK.

Titha kupempha zambiri pogwiritsa ntchito mikangano yambiri:

XPENDING {key} {groupname} [{start-id} {end-id} {count} [{consumer-name}]]
{start-id} {end-id} - zizindikilo zosiyanasiyana (mutha kugwiritsa ntchito β€œ-” ndi β€œ+”)
{count} - chiwerengero cha zoyesayesa zobweretsa
{Consumer-name} - dzina la gulu

> 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

Tsopano tili ndi tsatanetsatane wa uthenga uliwonse: ID, dzina lolembetsa, nthawi yopanda ntchito mu milliseconds ndipo pamapeto pake kuchuluka kwa zoyeserera zobweretsa. Tili ndi mauthenga awiri ochokera kwa Bob ndipo akhala opanda ntchito kwa 74170458 milliseconds, pafupifupi maola 20.

Chonde dziwani kuti palibe amene akutiletsa kuyang'ana zomwe zili mu uthengawo pogwiritsa ntchito XRANGE.

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

Timangoyenera kubwereza chizindikiritso chomwecho kawiri muzotsutsana. Tsopano popeza tili ndi lingaliro, Alice atha kuganiza kuti pakatha maola 20 atapuma, Bob mwina sachira, ndipo ndi nthawi yofunsa mauthengawo ndikuyambiranso kuwakonzera Bob. Kwa ichi timagwiritsa ntchito lamulo Chithunzi cha XCLAIM:

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

Pogwiritsa ntchito lamuloli, tikhoza kulandira uthenga "wachilendo" womwe sunakonzedwenso mwa kusintha mwiniwake kukhala {consumer}. Komabe, titha kuperekanso nthawi yochepa yopanda ntchito {min-idle-time}. Izi zimathandiza kupewa zomwe makasitomala awiri amayesa kusintha nthawi imodzi eni ake a mauthenga omwewo:

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

Wogula woyamba adzakhazikitsanso nthawi yotsika ndikuwonjezera kauntala yobweretsera. Chifukwa chake kasitomala wachiwiri sangathe kufunsa.

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

Uthengawu udanenedwa bwino ndi Alice, yemwe tsopano amatha kukonza uthengawo ndikuwuvomereza.

Kuchokera ku chitsanzo pamwambapa, mukhoza kuona kuti pempho lopambana limabweza zomwe zili mu uthengawo. Komabe, izi sizofunikira. Njira ya JUSTID ingagwiritsidwe ntchito kubweza ma ID okha. Izi ndizothandiza ngati mulibe chidwi ndi tsatanetsatane wa uthengawo ndipo mukufuna kuwonjezera magwiridwe antchito.

Delivery counter

Kauntala mukuwona pazotulutsa XPENDING ndi chiwerengero cha zotumizidwa za uthenga uliwonse. Kauntala yotereyi imachulukitsidwa m'njira ziwiri: pamene uthenga wafunsidwa bwino kudzera Chithunzi cha XCLAIM kapena pamene foni ikugwiritsidwa ntchito Mtengo wa XREADGROUP.

Ndi zachilendo kuti mauthenga ena aziperekedwa kangapo. Chachikulu ndichakuti mauthenga onse amakonzedwa. Nthawi zina zovuta zimachitika mukakonza uthenga chifukwa uthenga womwewo wawonongeka, kapena kukonza kwa uthenga kumayambitsa cholakwika mu code yosamalira. Pankhaniyi, zitha kuwoneka kuti palibe amene angakwanitse kukonza uthengawu. Popeza tili ndi kauntala yoyesera kubweretsa, titha kugwiritsa ntchito kauntalayi kuti tizindikire zinthu ngati izi. Choncho, chiwerengero cha kutumiza chikafika pa chiwerengero chachikulu chomwe mumatchula, kungakhale kwanzeru kuyika uthenga wotero pa ulusi wina ndikutumiza chidziwitso kwa woyang'anira dongosolo.

Thread State

timu Zithunzi za XINFO amagwiritsidwa ntchito pofunsa zambiri za ulusi ndi magulu ake. Mwachitsanzo, lamulo lofunikira limawoneka motere:

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

Lamulo pamwambapa likuwonetsa zambiri za mtsinje womwe watchulidwa. Tsopano chitsanzo chovuta pang'ono:

> 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

Lamulo pamwambapa likuwonetsa zambiri zamagulu onse a ulusi womwe watchulidwa

> 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

Lamulo lomwe lili pamwambapa likuwonetsa zambiri kwa onse olembetsa amtundu womwe watchulidwa ndi gulu.
Ngati muiwala mawu omasulira, ingofunsani lamulo lokha kuti likuthandizeni:

> 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

Mapulogalamu ambiri safuna kusonkhanitsa deta mumtsinje kwamuyaya. Nthawi zambiri zimakhala zothandiza kukhala ndi kuchuluka kwa mauthenga omwe amaloledwa pa ulusi uliwonse. Nthawi zina, ndizothandiza kusuntha mauthenga onse kuchokera ku ulusi kupita ku sitolo ina yosalekeza pamene kukula kwake kwa ulusi kwafika. Mutha kuchepetsa kukula kwa mtsinje pogwiritsa ntchito MAXLEN parameter mu lamulo Mtengo wa 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"

Mukamagwiritsa ntchito MAXLEN, zolemba zakale zimachotsedwa zokha zikafika kutalika kwake, kotero kuti mtsinjewo umakhala ndi kukula kosalekeza. Komabe, kudulira mu nkhani iyi sikuchitika mwa njira yabwino kwambiri mu kukumbukira Redis. Mutha kusintha zinthu motere:

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

~Kutsutsa muchitsanzo pamwambapa kumatanthauza kuti sitifunika kuchepetsa kutalika kwa mtsinje ku mtengo wake. Mu chitsanzo chathu, iyi ikhoza kukhala nambala iliyonse yoposa kapena yofanana ndi 1000 (mwachitsanzo, 1000, 1010, kapena 1030). Tangotchula mwatsatanetsatane kuti tikufuna kuti mtsinje wathu usunge ma rekodi 1000. Izi zimapangitsa kasamalidwe ka kukumbukira kukhala kothandiza kwambiri mkati mwa Redis.

Palinso gulu losiyana Zithunzi za XTRIM, yomwe imachita zomwezo:

> XTRIM mystream MAXLEN 10

> XTRIM mystream MAXLEN ~ 10

Kusunga kosalekeza ndi kubwerezabwereza

Redis Stream imasinthidwanso mwachisawawa ku ma node a akapolo ndikusungidwa ku mafayilo ngati AOF (chithunzi cha data yonse) ndi RDB (lolemba lazolemba zonse). Kubwereza kwa boma la Consumer Groups kumathandizidwanso. Chifukwa chake, ngati uthenga uli mu "podikirira" pa node ya master, ndiye pa node za akapolo uthenga uwu udzakhala ndi udindo womwewo.

Kuchotsa zinthu payekhapayekha pamtsinje

Pali lamulo lapadera lochotsa mauthenga XDEL. Lamulo limatenga dzina la ulusi wotsatiridwa ndi ma ID a uthenga kuti achotsedwe:

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

Mukamagwiritsa ntchito lamulo ili, muyenera kuganizira kuti kukumbukira kwenikweni sikudzatulutsidwa nthawi yomweyo.

Mitsinje yotalika zero

Kusiyanitsa pakati pa mitsinje ndi ma data ena a Redis ndikuti pamene zida zina za deta sizikhalanso ndi zinthu mkati mwawo, monga zotsatira zake, ndondomeko ya deta yokha idzachotsedwa pamtima. Chifukwa chake, mwachitsanzo, seti yosankhidwa idzachotsedwa kwathunthu foni ya ZREM ikachotsa chomaliza. M'malo mwake, ulusi umaloledwa kukhalabe m'chikumbukiro ngakhale popanda kukhala ndi zinthu mkati.

Pomaliza

Redis Stream ndiyabwino kupanga otsatsa mauthenga, mizere ya mauthenga, kudula mitengo molumikizana, komanso makina ochezera osunga mbiri.

Monga ndinanenera poyamba Niklaus Wirth, mapulogalamu ndi ma aligorivimu kuphatikiza ma data, ndipo Redis amakupatsani inu nonse.

Source: www.habr.com

Kuwonjezera ndemanga