Redis Stream - earbsachd agus scalability nan siostaman teachdaireachd agad

Redis Stream - earbsachd agus scalability nan siostaman teachdaireachd agad

Tha Redis Stream na sheòrsa dàta eas-chruthach ùr a chaidh a thoirt a-steach ann an Redis le dreach 5.0
Gu bun-bheachdail, is e Liosta a th’ ann an Redis Stream far am faod thu inntrigidhean a chur ris. Tha aithnichear sònraichte aig gach inntrigeadh. Gu gnàthach, thèid an ID a chruthachadh gu fèin-ghluasadach agus a’ toirt a-steach stampa-ama. Mar sin, faodaidh tu raointean de chlàran a cheasnachadh thar ùine, no dàta ùr fhaighinn fhad ‘s a ruigeas e an t-sruth, coltach ri àithne Unix“ tail -f ”a’ leughadh faidhle log agus a ’reothadh fhad‘ s a tha thu a ’feitheamh ri dàta ùr. Thoir an aire gum faod ioma-chleachdaiche èisteachd ri snàithlean aig an aon àm, dìreach mar as urrainn do phròiseasan “tail -f” faidhle a leughadh aig an aon àm gun a bhith a’ strì ri chèile.

Gus na buannachdan uile bhon t-seòrsa dàta ùr a thuigsinn, leig dhuinn sùil aithghearr a thoirt air na structaran Redis a tha ann o chionn fhada a tha gu ìre ag ath-aithris gnìomhachd Redis Stream.

Redis PUB / SUB

Is e siostam teachdaireachd sìmplidh a th’ ann an Redis Pub/Sub a chaidh a thogail a-steach don phrìomh stòr luach agad. Ach, tha sìmplidheachd a 'tighinn aig prìs:

  • Ma dh'fhàilligeas am foillsichear airson adhbhar air choireigin, bidh e a' call a luchd-aontachaidh gu lèir
  • Feumaidh fios a bhith aig an fhoillsichear air dearbh sheòladh a luchd-aontachaidh gu lèir
  • Faodaidh foillsichear cus obair a thoirt don luchd-aontachaidh ma thèid dàta fhoillseachadh nas luaithe na tha e air a phròiseasadh
  • Tha an teachdaireachd air a sguabadh às bufair an fhoillsichear dìreach às deidh fhoillseachadh, ge bith cia mheud neach-clàraidh a chaidh a lìbhrigeadh dha agus dè cho luath sa b’ urrainn dhaibh am brath seo a phròiseasadh.
  • Gheibh a h-uile neach-aontachaidh am brath aig an aon àm. Feumaidh luchd-aontachaidh iad fhèin aontachadh ann an dòigh air choireigin air an òrdugh airson an aon teachdaireachd a ghiullachd.
  • Chan eil uidheamachd stèidhichte ann gus dearbhadh gu bheil neach-aontachaidh air teachdaireachd a phròiseasadh gu soirbheachail. Ma gheibh neach-aontachaidh teachdaireachd agus ma thuiteas e ri linn giullachd, cha bhi fios aig an fhoillsichear mu dheidhinn.

Clàr Redis

Is e structar dàta a th’ ann an Redis List a bheir taic do bhacadh òrdughan leughaidh. Faodaidh tu teachdaireachdan a chur ris agus a leughadh bho thoiseach no deireadh na liosta. Stèidhichte air an structar seo, faodaidh tu stac no ciudha math a dhèanamh airson an t-siostam sgaoilte agad, agus sa mhòr-chuid de chùisean bidh seo gu leòr. Prìomh eadar-dhealachaidhean bho Redis Pub/Sub:

  • Tha an teachdaireachd air a lìbhrigeadh gu aon neach-dèiligidh. Gheibh a’ chiad neach-dèiligidh a tha air a bhacadh le leughadh an dàta an toiseach.
  • Feumaidh Clint an gnìomhachd leughaidh a thòiseachadh airson gach teachdaireachd e fhèin. Chan eil fios aig an liosta mu luchd-dèiligidh.
  • Bidh teachdaireachdan air an stòradh gus an leugh cuideigin iad no gus an cuir iad às gu soilleir iad. Ma shuidhicheas tu am frithealaiche Redis gus dàta a shruthladh gu diosc, bidh earbsachd an t-siostaim ag àrdachadh gu mòr.

Ro-ràdh don t-Sruth

A 'cur a-steach gu sruth

sgioba XADD a’ cur inntrigeadh ùr dhan t-sruth. Chan e dìreach sreang a th’ ann an clàr, tha e air a dhèanamh suas de aon no barrachd paidhrichean prìomh luach. Mar sin, tha structar mar-thà aig gach inntrigeadh agus tha e coltach ri structar faidhle CSV.

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

Anns an eisimpleir gu h-àrd, bidh sinn a 'cur dà raon ris an t-sruth leis an ainm (iuchair) "mystream": "sensor-id" agus "teòthachd" leis na luachan "1234" agus "19.8", fa leth. Mar an dàrna argamaid, bidh an àithne a’ gabhail aithnichear a thèid a shònrachadh don inntrig - tha an aithnichear seo gu sònraichte a’ comharrachadh gach inntrigeadh san t-sruth. Ach, anns a’ chùis seo chaidh sinn seachad * oir tha sinn airson gun cruthaich Redis ID ùr dhuinn. Meudaichidh gach ID ùr. Mar sin, bidh aithnichear nas àirde aig gach inntrigeadh ùr an coimeas ri inntrigidhean roimhe.

Cruth aithnichear

Thill an ID inntrigidh leis an àithne XADD, air a dhèanamh suas de dhà phàirt:

{millisecondsTime}-{sequenceNumber}

millisecondsTime - Ùine Unix ann am milliseconds (ùine frithealaiche Redis). Ach, ma tha an ùine làithreach co-ionann no nas lugha na àm a’ chlàraidh roimhe, thathas a’ cleachdadh clàr-ama a’ chlàraidh roimhe. Mar sin, ma thèid ùine an fhrithealaiche air ais ann an tìm, cumaidh an aithnichear ùr an t-seilbh àrdachaidh fhathast.

sreath Àireamh air a chleachdadh airson clàran a chaidh a chruthachadh anns an aon millisecond. sreath Àireamh àrdachadh le 1 an coimeas ris an inntrigeadh roimhe. Air sgàth gu bheil an sreath Àireamh 64 pìosan ann am meud, an uairsin ann an cleachdadh cha bu chòir dhut a dhol a-steach gu crìoch air an àireamh de chlàran a dh’ fhaodar a chruthachadh taobh a-staigh aon millisecond.

Is dòcha gu bheil cruth nan aithnichearan sin a’ coimhead neònach aig a’ chiad sealladh. Is dòcha gum bi leughadair mì-earbsach a’ faighneachd carson a tha ùine mar phàirt den aithnichear. Is e an adhbhar gu bheil sruthan Redis a’ toirt taic do cheistean raon le ID. Leis gu bheil an aithnichear co-cheangailte ris an ùine a chaidh an clàr a chruthachadh, tha seo ga dhèanamh comasach raointean ùine a cheasnachadh. Bheir sinn sùil air eisimpleir sònraichte nuair a choimheadas sinn air an àithne XRANNAN.

Ma dh'fheumas an neach-cleachdaidh airson adhbhar air choireigin an aithnichear aige fhèin a shònrachadh, a tha, mar eisimpleir, co-cheangailte ri siostam taobh a-muigh air choireigin, is urrainn dhuinn a thoirt don àithne XADD an àite * mar a chithear gu h-ìosal:

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

Thoir an aire gum feum thu sa chùis seo sùil a chumail air an àrdachadh ID thu fhèin. Anns an eisimpleir againn, is e “0-1” an aithnichear as ìsle, agus mar sin cha ghabh an àithne ri aithnichear eile a tha co-ionann ri no nas lugha na “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

An àireamh de chlàran gach sruth

Tha e comasach an àireamh de chlàran fhaighinn ann an sruth dìreach le bhith a’ cleachdadh an àithne XLEN. Mar eisimpleir, tillidh an òrdugh seo an luach a leanas:

> XLEN somestream
(integer) 2

Ceistean raoin - XRANGE agus XREVRANGE

Gus dàta iarraidh a rèir raon, feumaidh sinn dà aithnichear a shònrachadh - toiseach agus deireadh an raoin. Bidh an raon tilleadh a 'gabhail a-steach a h-uile eileamaid, a' gabhail a-steach na crìochan. Tha dà aithnichear sònraichte ann cuideachd “-” agus “+”, fa leth a’ ciallachadh an aithnichear as lugha (a’ chiad chlàr) agus as motha (clàr mu dheireadh) san t-sruth. Bheir an eisimpleir gu h-ìosal liosta de na h-inntrigidhean srutha gu lèir.

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

Tha sreath de dhà eileamaid anns gach clàr a thilleas: aithnichear agus liosta de chàraidean prìomh luach. Thuirt sinn mu thràth gu bheil aithnichearan chlàran co-cheangailte ri ùine. Mar sin, is urrainn dhuinn raon ùine sònraichte iarraidh. Ach, is urrainn dhuinn a shònrachadh san iarrtas chan e an aithnichear slàn, ach dìreach an ùine Unix, a’ fàgail a’ phàirt co-cheangailte ri sreath Àireamh. Thèid am pàirt den aithnichear a chaidh fhàgail air falbh a shuidheachadh gu fèin-ghluasadach gu neoni aig toiseach an raoin agus chun an luach as àirde a tha comasach aig deireadh an raoin. Gu h-ìosal tha eisimpleir de mar as urrainn dhut raon de dhà milliseconds iarraidh.

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

Chan eil againn ach aon inntrigeadh san raon seo, ach ann an seataichean dàta fìor faodaidh an toradh a thilleas a bhith fìor mhòr. Air an adhbhar seo XRANNAN a’ toirt taic don roghainn COUNT. Le bhith a’ sònrachadh na h-àireimh, is urrainn dhuinn dìreach na ciad chlàran N fhaighinn. Ma dh’ fheumas sinn na h-ath chlàran N fhaighinn (duilleag), is urrainn dhuinn an ID mu dheireadh a fhuair sinn a chleachdadh, àrdaich e sreath Àireamh le aon agus faighnich a-rithist. Bheir sinn sùil air seo anns an eisimpleir a leanas. Bidh sinn a 'tòiseachadh a' cur 10 eileamaidean le XADD (a 'gabhail ris gu robh an t-sruth agam air a lìonadh le eileamaidean 10 mu thràth). Gus an tionndadh a thòiseachadh a’ faighinn 2 eileamaid gach àithne, bidh sinn a’ tòiseachadh leis an raon slàn ach le COUNT co-ionann ri 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"

Gus leantainn air adhart ag aithris leis an ath dhà eileamaid, feumaidh sinn an ID mu dheireadh a fhuair sinn a thaghadh, i.e. 1519073279157-0, agus 1 a chur ris. sreath Àireamh.
Faodar an ID a thig às, sa chùis seo 1519073279157-1, a chleachdadh a-nis mar an argamaid tòiseachaidh raon ùr airson an ath ghairm XRANNAN:

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

Agus mar sin air adhart. Air sgàth iom-fhillteachd XRANNAN is O(log(N)) ri rannsachadh agus an uair sin O(M) gus eileamaidean M a thilleadh, agus tha gach ceum ath-aithris luath. Mar sin, a 'cleachdadh XRANNAN faodar sruthan ath-aithris gu h-èifeachdach.

sgioba XREVRANGE tha co-ionann XRANNAN, ach tillidh e na h-eileamaidean ann an òrdugh cùil:

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

Thoir an aire gu bheil an àithne XREVRANGE a’ gabhail argamaidean raon tòiseachadh is stad ann an òrdugh eile.

Leughadh inntrigidhean ùra a’ cleachdadh XREAD

Gu math tric bidh an obair ag èirigh bho bhith a’ fo-sgrìobhadh do shruth agus a’ faighinn dìreach teachdaireachdan ùra. Is dòcha gu bheil am bun-bheachd seo coltach ri Redis Pub / Sub no a’ bacadh Redis List, ach tha eadar-dhealachaidhean bunaiteach ann a thaobh mar a chleachdas tu Redis Stream:

  1. Thèid gach teachdaireachd ùr a lìbhrigeadh gu gach neach-clàraidh gu bunaiteach. Tha an giùlan seo eadar-dhealaichte bho Liosta Redis bacaidh, far nach tèid teachdaireachd ùr a leughadh ach le aon neach-clàraidh.
  2. Fhad ‘s a tha iad ann an Redis Pub / Sub tha a h-uile teachdaireachd air a dhìochuimhneachadh agus cha lean iad orra, ann an Stream tha a h-uile teachdaireachd air a chumail gun chrìoch (mura h-eil an neach-dèiligidh ag adhbhrachadh cuir às gu soilleir).
  3. Leigidh Redis Stream leat eadar-dhealachadh a dhèanamh air ruigsinneachd air teachdaireachdan taobh a-staigh aon sruth. Chan fhaic neach-aontachaidh sònraichte ach an eachdraidh teachdaireachd pearsanta aca.

Faodaidh tu fo-sgrìobhadh gu snàithlean agus teachdaireachdan ùra fhaighinn leis an àithne XREAD. Tha e beagan nas iom-fhillte na XRANNAN, mar sin tòisichidh sinn leis na h-eisimpleirean as sìmplidh an toiseach.

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

Tha an eisimpleir gu h-àrd a’ sealltainn foirm gun bhacadh XREAD. Thoir an aire gu bheil an roghainn COUNT roghainneil. Gu dearbh, is e an aon roghainn àithne a tha a dhìth an roghainn STREAMS, a shònraicheas liosta de shruthan còmhla ris an aithnichear as àirde co-fhreagarrach. Sgrìobh sinn “STREAMS mystream 0” - tha sinn airson a h-uile clàr den t-sruth mystream fhaighinn le aithnichear nas motha na “0-0”. Mar a chì thu bhon eisimpleir, tillidh an àithne ainm an t-snàthainn oir is urrainn dhuinn fo-sgrìobhadh gu iomadh snàithlean aig an aon àm. B’ urrainn dhuinn sgrìobhadh, mar eisimpleir, “STREAMS mystream otherstream 0 0”. Thoir an aire, às deidh an roghainn STREAMS, gum feum sinn an toiseach ainmean nan sruthan a tha a dhìth a thoirt seachad agus dìreach an uairsin liosta de dh’ aithnichearan.

Anns an fhoirm shìmplidh seo chan eil an àithne a’ dèanamh dad sònraichte an taca ri XRANNAN. Ach, is e an rud inntinneach gum faod sinn tionndadh gu furasta XREAD gu àithne bacadh, a' sònrachadh an argamaid BLOCK:

> XREAD BLOCK 0 STREAMS mystream $

Anns an eisimpleir gu h-àrd, tha roghainn BLOCK ùr air a shònrachadh le ùine a-mach de 0 milliseconds (tha seo a’ ciallachadh feitheamh gun chrìoch). A bharrachd air an sin, an àite a bhith a’ dol seachad air an aithnichear àbhaisteach airson an t-sruth mystream, chaidh aithnichear sònraichte $ seachad. Tha an aithnichear sònraichte seo a’ ciallachadh sin XREAD feumaidh tu an aithnichear as àirde san t-sruth agam a chleachdadh mar an aithnichear. Mar sin chan fhaigh sinn ach teachdaireachdan ùra bhon mhionaid a thòisich sinn ag èisteachd. Ann an cuid de dhòighean tha seo coltach ris an àithne Unix "tail -f".

Thoir an aire nuair a chleachdas sinn an roghainn BLOCK nach fheum sinn gu riatanach an aithnichear sònraichte $. Faodaidh sinn aithnichear sam bith a tha san t-sruth a chleachdadh. Mas urrainn don sgioba ar n-iarrtas a sheirbheis sa bhad gun bhacadh, nì iad sin, air neo cuiridh e bacadh air.

A' bacadh XREAD Faodaidh tu cuideachd èisteachd ri grunn snàithleanan aig an aon àm, cha leig thu leas ach na h-ainmean aca a shònrachadh. Anns a 'chùis seo, tillidh an àithne clàr den chiad shruth a fhuair dàta. Gheibh a’ chiad neach-clàraidh a chaidh a bhacadh airson snàithlean sònraichte dàta an toiseach.

Buidhnean Luchd-cleachdaidh

Ann an gnìomhan sònraichte, tha sinn airson casg a chuir air ruigsinneachd luchd-aontachaidh air teachdaireachdan taobh a-staigh aon snàithlean. Is e eisimpleir far am faodadh seo a bhith feumail ciudha teachdaireachd le luchd-obrach a gheibh diofar theachdaireachdan bho snàithlean, a leigeas le giullachd teachdaireachd gu sgèile.

Ma smaoinicheas sinn gu bheil trì fo-sgrìobhaichean againn C1, C2, C3 agus snàithlean anns a bheil teachdaireachdan 1, 2, 3, 4, 5, 6, 7, thèid na teachdaireachdan a fhrithealadh mar a chithear san dealbh gu h-ìosal:

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

Gus a’ bhuaidh seo a choileanadh, bidh Redis Stream a’ cleachdadh bun-bheachd ris an canar Consumer Group. Tha am bun-bheachd seo coltach ri neach-clàraidh meallta, a gheibh dàta bho shruth, ach a tha dha-rìribh air a fhrithealadh le grunn luchd-aontachaidh taobh a-staigh buidheann, a’ toirt seachad barrantasan sònraichte:

  1. Thèid gach teachdaireachd a lìbhrigeadh gu neach-aontachaidh eile taobh a-staigh na buidhne.
  2. Taobh a-staigh buidheann, tha luchd-aontachaidh air an comharrachadh leis an ainm aca, a tha na shreath a tha mothachail air cùis. Ma leigeas neach-aontachaidh a-mach às a’ bhuidheann airson ùine ghoirid, faodar a thoirt air ais don bhuidheann leis an ainm sònraichte aige fhèin.
  3. Bidh a h-uile Buidheann Luchd-cleachdaidh a’ leantainn a’ bhun-bheachd “a’ chiad teachdaireachd gun leughadh ”. Nuair a dh’iarras neach-aontachaidh teachdaireachdan ùra, chan fhaigh e ach teachdaireachdan nach deach a lìbhrigeadh roimhe seo gu neach-aontachaidh sam bith taobh a-staigh a’ chuantail.
  4. Tha àithne ann dearbhadh gu soilleir gun deach an teachdaireachd a phròiseasadh gu soirbheachail leis an fho-sgrìobhaiche. Gus an tèid an àithne seo a ghairm, fanaidh an teachdaireachd a chaidh iarraidh san inbhe "a' feitheamh".
  5. Taobh a-staigh a’ Bhuidheann Luchd-caitheimh, faodaidh gach neach-clàraidh eachdraidh de theachdaireachdan a chaidh a lìbhrigeadh dha iarraidh, ach nach deach an giullachd fhathast (san inbhe “ri thighinn”)

Ann an seagh, faodar staid na buidhne a chuir an cèill mar a leanas:

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

A-nis tha an t-àm ann eòlas fhaighinn air na prìomh òrdughan airson Buidheann Luchd-cleachdaidh, is iad sin:

  • XGROUP cleachdadh gus buidhnean a chruthachadh, a sgrios agus a stiùireadh
  • XREADGROUP chleachdadh airson sruth a leughadh tron ​​bhuidheann
  • XACK - leigidh an àithne seo leis an neach-clàraidh an teachdaireachd a chomharrachadh mar a chaidh a phròiseasadh gu soirbheachail

Cruthachadh Buidheann Luchd-cleachdaidh

Gabhamaid gu bheil mo shruth ann mu thràth. An uairsin seallaidh an àithne cruthachaidh buidhne mar:

> XGROUP CREATE mystream mygroup $
OK

Nuair a chruthaicheas sinn buidheann, feumaidh sinn aithnichear a thoirt seachad, a’ tòiseachadh às am faigh a’ bhuidheann teachdaireachdan. Ma tha sinn dìreach airson a h-uile brath ùr fhaighinn, faodaidh sinn an aithnichear sònraichte $ a chleachdadh (mar a tha san eisimpleir againn gu h-àrd). Ma shònraicheas tu 0 an àite aithnichear sònraichte, bidh a h-uile teachdaireachd san t-snàthainn ri fhaighinn don chuantal.

A-nis gu bheil a 'bhuidheann air a chruthachadh, is urrainn dhuinn tòiseachadh sa bhad a' leughadh teachdaireachdan a 'cleachdadh an àithne XREADGROUP. Tha an òrdugh seo glè choltach ri XREAD agus a 'toirt taic don roghainn BLOC roghainneil. Ach, tha roghainn GROUP riatanach a dh’ fheumar a shònrachadh an-còmhnaidh le dà argamaid: ainm a’ chuantail agus ainm an neach-clàraidh. Tha an roghainn COUNT cuideachd a' faighinn taic.

Mus leugh thu an t-snàthainn, leig dhuinn teachdaireachdan a chuir an sin:

> 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

A-nis feuchaidh sinn ris an t-sruth seo a leughadh tron ​​​​chuantal:

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

Tha an àithne gu h-àrd a’ leughadh facal air an fhacal mar a leanas:

“Tha mise, an neach-aontachaidh Alice, ball den mygroup, airson aon teachdaireachd a leughadh bhon t-sruth agam nach deach a lìbhrigeadh do dhuine sam bith roimhe seo."

Gach uair a bhios neach-aontachaidh a’ coileanadh gnìomhachd air buidheann, feumaidh e ainm a thoirt seachad, ga chomharrachadh gu sònraichte sa bhuidheann. Tha aon mion-fhiosrachadh fìor chudromach anns an àithne gu h-àrd - an aithnichear sònraichte">". Bidh an aithnichear sònraichte seo a’ sìoladh teachdaireachdan, a’ fàgail dìreach an fheadhainn nach deach a lìbhrigeadh a-riamh roimhe.

Cuideachd, ann an cùisean sònraichte, faodaidh tu fìor aithnichear a shònrachadh leithid 0 no aithnichear dligheach sam bith eile. Anns a 'chùis seo, an òrdugh XREADGROUP bheir e air ais dhut eachdraidh de theachdaireachdan le inbhe "feitheamh" a chaidh a lìbhrigeadh don neach-aontachaidh ainmichte (Alice) ach nach deach aithneachadh fhathast leis an àithne XACK.

Is urrainn dhuinn an giùlan seo a dhearbhadh le bhith a’ sònrachadh ID 0 sa bhad, às aonais an roghainn COUNT. Chì sinn dìreach aon teachdaireachd ri thighinn, is e sin, teachdaireachd an ubhal:

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

Ach, ma dhearbhas sinn gu bheil an teachdaireachd air a phròiseasadh gu soirbheachail, cha tèid a thaisbeanadh tuilleadh:

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

A-nis is e cothrom Bob rudeigin a leughadh:

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

Dh’ iarr Bob, ball den bhuidheann agam, gun a bhith nas fhaide na dà theachdaireachd. Chan eil an àithne ag aithris ach teachdaireachdan nach deach a lìbhrigeadh air sgàth an aithnichear sònraichte">". Mar a chì thu, cha tèid an teachdaireachd "ubhal" a thaisbeanadh bhon a chaidh a lìbhrigeadh gu Alice mar-thà, agus mar sin gheibh Bob "orains" agus "sùbh-làir".

San dòigh seo, faodaidh Alice, Bob, agus neach-aontachaidh sam bith eile sa bhuidheann teachdaireachdan eadar-dhealaichte bhon aon shruth a leughadh. Faodaidh iad cuideachd an eachdraidh teachdaireachdan gun phròiseas a leughadh no teachdaireachdan a chomharrachadh mar a chaidh an giullachd.

Tha beagan rudan ri chumail nad inntinn:

  • Cho luath ‘s a bhios an neach-clàraidh a’ beachdachadh air an teachdaireachd mar àithne XREADGROUP, tha an teachdaireachd seo a’ dol a-steach don stàit “a’ feitheamh” agus air a shònrachadh don neach-clàraidh sònraichte sin. Chan urrainn do luchd-aontachaidh eile a' chuantail am brath seo a leughadh.
  • Bidh luchd-aontachaidh air an cruthachadh gu fèin-ghluasadach air a’ chiad iomradh, chan fheumar an cruthachadh gu soilleir.
  • Le cuideachadh bho XREADGROUP 's urrainn dhut teachdaireachdan bho iomadh snàithlean eadar-dhealaichte a leughadh aig an aon àm, ach airson seo obrachadh feumaidh tu an toiseach buidhnean a chruthachadh leis an aon ainm airson gach snàthainn a' cleachdadh XGROUP

Ath-bheothachadh an dèidh fàilligeadh

Faodaidh an neach-clàraidh faighinn seachad air an fhàiligeadh agus an liosta de theachdaireachdan aige ath-leughadh leis an inbhe “a’ feitheamh ”. Ach, anns an t-saoghal fhìor, faodaidh luchd-aontachaidh fàiligeadh aig a’ cheann thall. Dè thachras do theachdaireachdan steigte neach-aontachaidh mura h-urrainn don neach-aontachaidh faighinn seachad air fàiligeadh?
Buidheann luchd-cleachdaidh a 'tabhann feart a tha air a chleachdadh airson dìreach a leithid de chùisean - nuair a dh'fheumas tu atharrachadh sealbhadair brathan.

Is e a 'chiad rud a dh'fheumas tu a dhèanamh a bhith a' gairm an àithne XPENDING, a sheallas a h-uile teachdaireachd sa bhuidheann leis an inbhe “a’ feitheamh”. Anns an fhoirm as sìmplidhe, chan eil ach dà argamaid air an àithne: ainm an t-snàthainn agus ainm na buidhne:

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

Sheall an sgioba an àireamh de theachdaireachdan gun phròiseas airson a’ chuantail air fad agus airson gach fo-sgrìobhaiche. Chan eil againn ach Bob le dà theachdaireachd air leth oir chaidh an aon teachdaireachd a dh’ iarr Alice a dhearbhadh leis XACK.

Faodaidh sinn barrachd fiosrachaidh iarraidh le bhith a’ cleachdadh barrachd argamaidean:

XPENDING {key} {groupname} [{start-id} {end-id} {count} [{consumer-name}]]
{start-id} {end-id} - raon aithnichearan (faodaidh tu “-” agus “+”) a chleachdadh
{cunnt} — an àireamh oidhirpean lìbhrigidh
{ainm-cleachdaiche} - ainm a' chuantail

> 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

A-nis tha mion-fhiosrachadh againn airson gach teachdaireachd: ID, ainm an neach-clàraidh, ùine leisg ann am milliseconds agus mu dheireadh an àireamh oidhirpean lìbhrigidh. Tha dà theachdaireachd againn bho Bob agus tha iad air a bhith leisg airson 74170458 milliseconds, timcheall air 20 uair.

Thoir an aire nach eil duine a’ cur stad oirnn bho bhith a’ sgrùdadh dè bha anns an teachdaireachd dìreach le bhith a’ cleachdadh XRANNAN.

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

Feumaidh sinn an aon aithnichear ath-aithris dà uair anns na h-argamaidean. A-nis gu bheil beagan beachd againn, is dòcha gun co-dhùin Alice, às deidh 20 uair de dh ’ùine downt, gur dòcha nach fhaigh Bob seachad air, agus tha an t-àm ann na teachdaireachdan sin a cheasnachadh agus ath-thòiseachadh gan giullachd airson Bob. Airson seo cleachdaidh sinn an àithne XCLAIM:

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

A’ cleachdadh na h-àithne seo, gheibh sinn teachdaireachd “cèin” nach deach a phròiseasadh fhathast le bhith ag atharrachadh an t-sealbhadair gu {neach-cleachdaidh}. Ach, is urrainn dhuinn cuideachd an ùine as lugha leisg {min-idle-time} a thoirt seachad. Cuidichidh seo le bhith a’ seachnadh suidheachadh far am bi dà neach-dèiligidh a’ feuchainn ri sealbhadair nan aon theachdaireachdan atharrachadh aig an aon àm:

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

Ath-shuidhichidh a’ chiad neach-ceannach an ùine downt agus àrdaichidh e a’ chunntair lìbhrigidh. Mar sin chan urrainn don dàrna neach-dèiligidh iarraidh air.

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

Chaidh an teachdaireachd a thagradh gu soirbheachail le Alice, as urrainn a-nis an teachdaireachd a phròiseasadh agus aideachadh.

Bhon eisimpleir gu h-àrd, chì thu gu bheil iarrtas soirbheachail a 'tilleadh susbaint na teachdaireachd fhèin. Ach, chan eil seo riatanach. Faodar an roghainn JUSTID a chleachdadh gus IDan teachdaireachd a thilleadh a-mhàin. Tha seo feumail mura h-eil ùidh agad ann am mion-fhiosrachadh na teachdaireachd agus gu bheil thu airson coileanadh siostam àrdachadh.

Cunntair lìbhrigidh

An cuntair a chì thu san toradh XPENDING is e an àireamh de lìbhrigeadh gach teachdaireachd. Tha an leithid de chunntair air a mheudachadh ann an dà dhòigh: nuair a thèid teachdaireachd iarraidh gu soirbheachail tro XCLAIM no nuair a thèid gairm a chleachdadh XREADGROUP.

Tha e àbhaisteach gum bi cuid de theachdaireachdan air an lìbhrigeadh iomadh uair. Is e am prìomh rud gu bheil a h-uile teachdaireachd air a phròiseasadh mu dheireadh. Uaireannan bidh trioblaidean a’ tachairt nuair a bhios tu a’ giollachd teachdaireachd leis gu bheil an teachdaireachd fhèin truaillidh, no gu bheil giullachd teachdaireachd ag adhbhrachadh mearachd ann an còd an làimhseachaidh. Anns a 'chùis seo, is dòcha nach bi duine comasach air an teachdaireachd seo a phròiseasadh. Leis gu bheil cuntair oidhirp lìbhrigidh againn, is urrainn dhuinn a’ chunntair seo a chleachdadh gus suidheachaidhean mar sin a lorg. Mar sin, aon uair ‘s gun ruig an àireamh lìbhrigidh an àireamh àrd a shònraicheas tu, is dòcha gum biodh e na bu ghlice a leithid de theachdaireachd a chuir air snàithlean eile agus fios a chuir gu rianadair an t-siostaim.

Stàit Thread

sgioba XINFO air a chleachdadh gus diofar fiosrachaidh iarraidh mu snàithlean agus na buidhnean aige. Mar eisimpleir, tha òrdugh bunaiteach a 'coimhead mar seo:

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

Tha an àithne gu h-àrd a’ taisbeanadh fiosrachadh coitcheann mun t-sruth ainmichte. A-nis eisimpleir beagan nas iom-fhillte:

> 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

Tha an àithne gu h-àrd a’ taisbeanadh fiosrachadh coitcheann airson a h-uile buidheann den t-snàthainn ainmichte

> 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

Tha an àithne gu h-àrd a’ taisbeanadh fiosrachadh airson a h-uile neach-aontachaidh san t-sruth agus sa bhuidheann ainmichte.
Ma dhìochuimhnicheas tu an co-chòrdadh àithne, dìreach faighnich don àithne fhèin airson cuideachadh:

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

Crìochan Meud Sruth

Tha mòran thagraidhean nach eil airson dàta a chruinneachadh ann an sruth gu bràth. Gu math tric tha e feumail an àireamh as motha de theachdaireachdan a bhith ceadaichte airson gach snàthainn. Ann an cùisean eile, tha e feumail gach teachdaireachd a ghluasad bho snàithlean gu stòr leantainneach eile nuair a ruigear am meud snàthainn ainmichte. Faodaidh tu meud sruthan a chuingealachadh a’ cleachdadh am paramadair MAXLEN san àithne 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"

Nuair a bhios tu a’ cleachdadh MAXLEN, thèid seann chlàran a dhubhadh às gu fèin-ghluasadach nuair a ruigeas iad fad ainmichte, gus am bi meud seasmhach aig an t-sruth. Ach, chan eil bearradh sa chùis seo a’ tachairt anns an dòigh as èifeachdaiche ann an cuimhne Redis. Faodaidh tu an suidheachadh a leasachadh mar a leanas:

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

Tha an argamaid ~ san eisimpleir gu h-àrd a' ciallachadh nach fheum sinn fad an t-srutha a chuingealachadh gu luach sònraichte. Anns an eisimpleir againn, dh’ fhaodadh seo a bhith mar àireamh sam bith nas motha na no co-ionann ri 1000 (mar eisimpleir, 1000, 1010, no 1030). Tha sinn dìreach air sònrachadh gu soilleir gu bheil sinn airson gum bi an t-sruth againn a’ stòradh co-dhiù 1000 clàr. Tha seo a’ dèanamh riaghladh cuimhne tòrr nas èifeachdaiche taobh a-staigh Redis.

Tha sgioba air leth ann cuideachd XTRIM, a nì an aon rud:

> XTRIM mystream MAXLEN 10

> XTRIM mystream MAXLEN ~ 10

Stòradh seasmhach agus ath-riochdachadh

Tha Redis Stream air ath-aithris gu neo-chinnteach gu nodan tràillean agus air a shàbhaladh gu faidhlichean mar AOF (dealbh den dàta gu lèir) agus RDB (log de gach obair sgrìobhaidh). Thathas cuideachd a’ toirt taic do ath-riochdachadh stàite Buidhnean Luchd-cleachdaidh. Mar sin, ma tha teachdaireachd san inbhe “feitheamh” air a’ phrìomh nód, an uairsin air na nodan tràillean bidh an aon inbhe aig an teachdaireachd seo.

A 'toirt air falbh eileamaidean fa leth bho shruth

Tha òrdugh sònraichte ann airson teachdaireachdan a sguabadh às XDEL. Gheibh an àithne ainm an t-snàthainn agus an uairsin IDan teachdaireachd a thèid a dhubhadh às:

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

Nuair a bhios tu a’ cleachdadh an àithne seo, feumaidh tu gabhail a-steach nach tèid an fhìor chuimhne a leigeil ma sgaoil sa bhad.

Sruthan fad neoni

Is e an eadar-dhealachadh eadar sruthan agus structaran dàta Redis eile, nuair nach eil eileamaidean taobh a-staigh structaran dàta eile tuilleadh, mar taobh-buaidh, thèid an structar dàta fhèin a thoirt air falbh bhon chuimhne. Mar sin, mar eisimpleir, thèid an seata òrdachadh a thoirt air falbh gu tur nuair a bheir an gairm ZREM an eileamaid mu dheireadh air falbh. An àite sin, tha cead aig snàithleanan fuireach mar chuimhneachan eadhon gun eileamaidean sam bith a-staigh.

co-dhùnadh

Tha Redis Stream air leth freagarrach airson brocairean teachdaireachd a chruthachadh, ciudhaichean teachdaireachd, logadh aonaichte, agus siostaman còmhraidh cumail eachdraidh.

Mar a thuirt mi aon uair Niklaus Wirth, tha prògraman mar algorithms a bharrachd air structaran dàta, agus tha Redis mar-thà a 'toirt dhut an dà chuid.

Source: www.habr.com

Cuir beachd ann