ʻO Redis Stream kahi ʻano ʻikepili abstract hou i hoʻokomo ʻia ma Redis me ka mana 5.0
ʻO ka manaʻo, ʻo Redis Stream kahi papa inoa e hiki ai iā ʻoe ke hoʻohui i nā mea komo. Loaʻa i kēlā me kēia komo kahi mea hōʻike kūʻokoʻa. ʻO ka mea paʻamau, hana ʻakomi ʻia ka ID a loaʻa i kahi hōʻailona manawa. No laila, hiki iā ʻoe ke nīnau i nā pae o nā moʻolelo i ka manawa, a i ʻole ka loaʻa ʻana o ka ʻikepili hou i kona hiki ʻana mai i ke kahawai, e like me ke kauoha Unix "tail -f" heluhelu i kahi faila log a paʻa i ka wā e kali ana i ka ʻikepili hou. E hoʻomaopopo he hiki i nā mea kūʻai he nui ke hoʻolohe i kahi pae i ka manawa like, e like me ka nui o nā kaʻina "tail -f" hiki ke heluhelu i kahi faila i ka manawa like me ka hakakā ʻole me kekahi.
No ka hoʻomaopopo ʻana i nā pono āpau o ka ʻano ʻikepili hou, e nānā wikiwiki mākou i nā hale Redis lōʻihi e hoʻohālikelike nei i ka hana o Redis Stream.
Hoʻopuka hou i ka PUB/SUB
ʻO Redis Pub/Sub kahi ʻōnaehana memo maʻalahi i kūkulu ʻia i loko o kāu hale kūʻai waiwai kī. Eia naʻe, hiki mai ka maʻalahi ma ke kumukūʻai:
- Inā hāʻule ka mea hoʻopuka no kekahi kumu, a laila nalowale kāna mau mea kākau inoa
- Pono ka mea hoʻopuka e ʻike i ka helu kikoʻī o nā mea kākau inoa a pau
- Hiki i ka mea hoʻopuka ke hoʻonui i kāna mau mea kākau me ka hana inā paʻi ʻia ka ʻikepili ma mua o ka hana ʻana
- Holoi ʻia ka memo mai ka pale o ka mea hoʻopuka ma hope koke iho o ka paʻi ʻana, me ka nānā ʻole i ka nui o ka poʻe kākau inoa i hāʻawi ʻia a pehea ka wikiwiki i hiki iā lākou ke hoʻoponopono i kēia memo.
- E loaʻa i ka poʻe kākau inoa ka leka i ka manawa like. Pono nā mea kākau inoa iā lākou iho e ʻae i waena o lākou iho i ke kauoha o ka hoʻoili ʻana i ka leka like.
- ʻAʻohe mea hana i kūkulu ʻia e hōʻoia i ka hoʻokō pono ʻana o ka mea kākau inoa i kahi leka. Inā loaʻa ka memo i ka mea kākau inoa a hāʻule i ka wā e hana ai, ʻaʻole ʻike ka mea hoʻopuka.
Papa inoa Redis
ʻO ka papa inoa ʻo Redis kahi ʻano ʻikepili e kākoʻo ana i ka pale ʻana i nā kauoha heluhelu. Hiki iā ʻoe ke hoʻohui a heluhelu i nā memo mai ka hoʻomaka a i ʻole ka hopena o ka papa inoa. Ma muli o kēia hoʻolālā, hiki iā ʻoe ke hana i kahi hoʻopaʻa a i ʻole queue maikaʻi no kāu ʻōnaehana puʻupuʻu, a ma ka hapa nui e lawa kēia. ʻO nā ʻokoʻa nui mai Redis Pub/Sub:
- Hāʻawi ʻia ka leka i hoʻokahi mea kūʻai. E loaʻa mua ka ʻikepili i ka mea kūʻai aku i pāpā ʻia i ka heluhelu mua.
- Pono ʻo Clint e hoʻomaka i ka hana heluhelu no kēlā me kēia memo iā ia iho. ʻAʻole ʻike ʻo List i nā mea kūʻai aku.
- Mālama ʻia nā memo a hiki i ka heluhelu ʻana a i ʻole ka holoi ʻana i nā memo. Inā ʻoe e hoʻonohonoho i ka server Redis e hoʻokuʻu i ka ʻikepili i ka disk, a laila piʻi nui ka hilinaʻi o ka ʻōnaehana.
Introduction to Stream
Hoʻohui i kahi komo i kahi kahawai
hui XADD hoʻokomo hou i ke kahawai. ʻAʻole ʻo ka moʻolelo he kaula wale nō, aia i loko o hoʻokahi a ʻoi aʻe paha mau kī-waiwai paʻa. No laila, ua hoʻonohonoho ʻia kēlā me kēia komo a ua like me ke ʻano o kahi faila CSV.
> XADD mystream * sensor-id 1234 temperature 19.8
1518951480106-0
I ka laʻana ma luna, hoʻohui mākou i ʻelua mau māla i ke kahawai me ka inoa (key) "mystream": "sensor-id" a me "temperature" me nā waiwai "1234" a me "19.8", kēlā me kēia. E like me ka hoʻopaʻapaʻa ʻelua, lawe ke kauoha i kahi ʻike e hāʻawi ʻia i ke komo - ʻike kūʻokoʻa kēia mea hōʻike i kēlā me kēia komo i ke kahawai. Eia naʻe, i kēia hihia ua hala mākou * no ka mea makemake mākou e hana ʻo Redis i kahi ID hou no mākou. E hoʻonui ʻia kēlā me kēia ID hou. No laila, e loaʻa i kēlā me kēia komo hou kahi mea hōʻike kiʻekiʻe e pili ana i nā mea i komo mua.
Hōʻike hōʻike
Hoʻihoʻi ʻia ka ID komo ma ke kauoha XADD, aia i ʻelua ʻāpana:
{millisecondsTime}-{sequenceNumber}
millisecondsTime - Ka manawa Unix i milliseconds (Redis server manawa). Eia nō naʻe, inā like ka manawa o kēia manawa a i ʻole ka liʻiliʻi ma mua o ka manawa o ka hoʻopaʻa ʻana ma mua, a laila hoʻohana ʻia ka manawa o ka hoʻopaʻa ʻana ma mua. No laila, inā e hoʻi ka manawa kikowaena i ka manawa, e hoʻomau ka mea hōʻike hou i ka waiwai hoʻonui.
SequenceNumber hoʻohana ʻia no nā moʻolelo i hana ʻia ma ka millisecond like. SequenceNumber e hoʻonui ʻia e 1 pili i ke komo mua. No ka mea SequenceNumber he 64 bits ka nui, a laila ma ka hoʻomaʻamaʻa ʻaʻole pono ʻoe e holo i ka palena o ka helu o nā moʻolelo i hiki ke hana ʻia i loko o hoʻokahi millisecond.
He mea ʻē paha ke ʻano o ia mau mea hōʻike i ka nānā mua ʻana. Hiki paha i ka mea heluhelu hilinaʻi ke noʻonoʻo i ke kumu o ka manawa i ʻāpana o ka mea ʻike. ʻO ke kumu ke kākoʻo nei nā kahawai Redis i nā nīnau kikoʻī e ka ID. Ma muli o ka pili ʻana o ka mea ʻike me ka manawa i hana ʻia ai ka moʻolelo, hiki iā ia ke nīnau i nā pae manawa. E nānā mākou i kahi hiʻohiʻona kikoʻī ke nānā mākou i ke kauoha XRANGE.
Inā no kekahi kumu e pono ai ka mea hoʻohana e kuhikuhi i kāna ʻike ponoʻī, kahi, no ka laʻana, pili me kekahi ʻōnaehana waho, a laila hiki iā mākou ke hāʻawi iā ia i ke kauoha. XADD ma kahi o * e like me ka mea i hōʻike ʻia ma lalo nei:
> XADD somestream 0-1 field value
0-1
> XADD somestream 0-2 foo bar
0-2
E ʻoluʻolu, ma kēia hihia, pono ʻoe e nānā i ka hoʻonui ʻana i ka ID iā ʻoe iho. I kā mākou laʻana, ʻo ka mea hōʻike haʻahaʻa he "0-1", no laila ʻaʻole e ʻae ke kauoha i kahi mea hōʻike ʻē aʻe i like a i ʻole ka liʻiliʻi ma mua o "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
Ka helu o nā moʻolelo i kēlā me kēia kahawai
Hiki ke kiʻi i ka helu o nā moʻolelo i loko o kahi kahawai me ka hoʻohana ʻana i ke kauoha XLEN. No kā mākou laʻana, e hoʻihoʻi kēia kauoha i kēia waiwai:
> XLEN somestream
(integer) 2
Nā nīnau laulā - XRANGE a me XREVRANGE
No ke noi ʻana i ka ʻikepili ma ka laulā, pono mākou e kuhikuhi i ʻelua mau mea hōʻike - ka hoʻomaka a me ka hopena o ka laulā. ʻO ka laula i hoʻihoʻi ʻia e komo i nā mea āpau, me nā palena. Aia pū kekahi ʻelua mea hōʻike kūikawā "-" a me "+", ʻo ia hoʻi ka mea ʻike liʻiliʻi loa (ka moʻolelo mua) a me ka mea nui loa (moʻolelo hope) i ke kahawai. E papa inoa ka laʻana ma lalo nei i nā hoʻokomo kahawai.
> 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"
ʻO kēlā me kēia moʻolelo i hoʻihoʻi ʻia he ʻano o nā mea ʻelua: kahi mea hōʻike a me kahi papa inoa o nā hui waiwai kī. Ua ʻōlelo mua mākou e pili ana nā mea hōʻike moʻolelo i ka manawa. No laila, hiki iā mākou ke noi i kahi ākea o kahi manawa kikoʻī. Eia naʻe, hiki iā mākou ke kuhikuhi i ka noi ʻaʻole i ka mea hōʻike piha, akā ʻo ka manawa Unix wale nō, e haʻalele i ka ʻāpana e pili ana i SequenceNumber. E hoʻonohonoho ʻokoʻa ʻia ka ʻāpana i haʻalele ʻia i ka zero ma ka hoʻomaka ʻana o ka laulā a i ka waiwai nui loa i ka hopena o ka laulā. Aia ma lalo kahi hiʻohiʻona pehea e hiki ai iā ʻoe ke noi i kahi ākea o ʻelua milliseconds.
> XRANGE mystream 1518951480106 1518951480107
1) 1) 1518951480106-0
2) 1) "sensor-id"
2) "1234"
3) "temperature"
4) "19.8"
Hoʻokahi wale nō kā mākou komo ʻana i kēia pae, akā i nā pūʻulu ʻikepili maoli hiki ke nui ka hopena i hoʻihoʻi ʻia. No keia kumu XRANGE kākoʻo i ke koho COUNT. Ma ka wehewehe ʻana i ka nui, hiki iā mākou ke loaʻa nā moʻolelo N mua. Inā pono mākou e kiʻi i nā moʻolelo N aʻe (pagination), hiki iā mākou ke hoʻohana i ka ID i loaʻa hope, e hoʻonui SequenceNumber e kekahi a ninau hou aku. E nana kakou i keia ma keia la'ana. Hoʻomaka mākou e hoʻohui i 10 mau mea me XADD (me ka manaʻo ua hoʻopiha ʻia kaʻu kahawai me 10 mau mea). No ka hoʻomaka ʻana i ka loaʻa ʻana o nā mea 2 i kēlā me kēia kauoha, hoʻomaka mākou me ka laulā piha akā me COUNT like me 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"
No ka hoʻomau i ka hoʻomau ʻana me nā mea ʻelua e hiki mai ana, pono mākou e koho i ka ID hope loa i loaʻa, ʻo ia hoʻi 1519073279157-0, a hoʻohui i ka 1 i SequenceNumber.
ʻO ka hopena ID, i kēia hihia 1519073279157-1, hiki ke hoʻohana ʻia ma ke ʻano he hoʻomaka hou o ka hoʻopaʻapaʻa ākea no ke kelepona aʻe. 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"
A laila. No ka paʻakikī XRANGE ʻo O(log(N)) e ʻimi a laila O(M) e hoʻihoʻi i nā mea M, a laila wikiwiki kēlā me kēia ʻanuʻu. No laila, hoʻohana XRANGE Hiki ke hoʻololi maikaʻi ʻia nā kahawai.
hui XREVRANGE ʻo ia ka mea like XRANGE, akā hoʻihoʻi i nā mea i ka hoʻonohonoho hope:
> XREVRANGE mystream + - COUNT 1
1) 1) 1519073287312-0
2) 1) "foo"
2) "value_10"
E ʻoluʻolu e hoʻomaopopo i ke kauoha XREVRANGE e hoʻomaka a hoʻōki i nā ʻōlelo hoʻopaʻapaʻa ma ka ʻaoʻao hoʻohuli.
Heluhelu i nā mea hou me XREAD
Hoʻomaka pinepine ka hana o ke kau inoa ʻana i kahi kahawai a loaʻa wale nā memo hou. Ua like paha kēia manaʻo me Redis Pub/Sub a i ʻole ke kāohi ʻana i ka Redis List, akā aia nā ʻokoʻa koʻikoʻi i ka hoʻohana ʻana iā Redis Stream:
- Hāʻawi ʻia kēlā me kēia memo hou i kēlā me kēia mea kākau inoa. He ʻokoʻa kēia ʻano mai kahi papa inoa Redis, kahi e heluhelu ʻia ai kahi leka hou e ka mea kākau inoa.
- ʻOiai ma Redis Pub/Sub poina ʻia nā memo a pau ʻole a hoʻomau ʻia, ma Stream e hoʻopaʻa mau ʻia nā memo a pau (koe ke kumu o ka mea kūʻai aku i ka hoʻopau ʻana).
- Hiki iā Redis Stream iā ʻoe ke hoʻokaʻawale i ke komo ʻana i nā memo i loko o hoʻokahi kahawai. Hiki i ka mea kākau inoa ke ʻike wale i kā lākou moʻolelo memo pilikino.
Hiki iā ʻoe ke kau inoa i kahi pae a loaʻa nā memo hou me ke kauoha XREAD. ʻOi aku ka paʻakikī ma mua o XRANGE, no laila e hoʻomaka mākou me nā laʻana maʻalahi ma mua.
> 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"
Hōʻike ka laʻana i luna i kahi ʻano pale ʻole XREAD. E hoʻomaopopo he koho ke koho COUNT. ʻO ka ʻoiaʻiʻo, ʻo ke koho kauoha wale nō ka koho STREAMS, kahi e wehewehe ai i kahi papa inoa o nā kahawai me ka mea hōʻike kiʻekiʻe. Ua kākau mākou iā "STREAMS mystream 0" - makemake mākou e loaʻa nā moʻolelo āpau o ke kahawai mystream me kahi mea hōʻike ʻoi aku ka nui ma mua o "0-0". E like me kāu e ʻike ai mai ka laʻana, e hoʻihoʻi ke kauoha i ka inoa o ke kaula no ka mea hiki iā mākou ke kau inoa i nā kaula he nui i ka manawa like. Hiki iā mākou ke kākau, no ka laʻana, "STREAMS mystream otherstream 0 0". E ʻoluʻolu, ma hope o ke koho STREAMS pono mākou e hāʻawi mua i nā inoa o nā kahawai i makemake ʻia a laila wale nō ka papa inoa o nā mea hōʻike.
Ma kēia ʻano maʻalahi ʻaʻole hana ke kauoha i kekahi mea kūikawā i hoʻohālikelike ʻia XRANGE. Eia naʻe, ʻo ka mea hoihoi, hiki iā mākou ke huli maʻalahi XREAD i kahi kauoha pale, e kuhikuhi ana i ka hoʻopaʻapaʻa BLOCK:
> XREAD BLOCK 0 STREAMS mystream $
Ma ka laʻana ma luna, ua kuhikuhi ʻia kahi koho BLOCK hou me kahi manawa o 0 milliseconds (ʻo ia hoʻi ke kali mau ʻole). Eia kekahi, ma kahi o ka hāʻawi ʻana i ka mea hōʻike maʻamau no ke kahawai mystream, ua hāʻawi ʻia kahi mea hōʻike kūikawā $. ʻO kēia mea hōʻike kūikawā ʻo ia hoʻi XREAD pono e hoʻohana i ka mea hōʻike kiʻekiʻe loa i kaʻu kahawai ma ke ʻano he ʻike. No laila e loaʻa wale iā mākou nā memo hou mai ka manawa a mākou i hoʻomaka ai e hoʻolohe. Ma kekahi mau ʻano, ua like kēia me ke kauoha Unix "tail -f".
E hoʻomaopopo i ka hoʻohana ʻana i ka koho BLOCK ʻaʻole pono mākou e hoʻohana i ka mea hōʻike kūikawā $. Hiki iā mākou ke hoʻohana i nā mea hōʻike i loaʻa i ke kahawai. Inā hiki i ka hui ke lawelawe koke i kā mākou noi me ka pale ʻole, e hana ia pēlā, inā ʻaʻole ia e poloka.
Kāohi ʻana XREAD Hiki iā ʻoe ke hoʻolohe i nā loina he nui i ka manawa hoʻokahi, pono ʻoe e kuhikuhi i ko lākou mau inoa. I kēia hihia, e hoʻihoʻi ke kauoha i kahi moʻolelo o ke kahawai mua i loaʻa ka ʻikepili. ʻO ka mea kākau mua i pāpā ʻia no kahi kahawai i hāʻawi ʻia e loaʻa mua ka ʻikepili.
Nā Pūʻulu Kūʻai
Ma kekahi mau hana, makemake mākou e kaupalena i ke komo ʻana o ka mea kākau inoa i nā memo i loko o hoʻokahi pae. ʻO kahi laʻana kahi e hiki ai ke hoʻohana ʻia he laina leka me nā limahana e loaʻa nā memo like ʻole mai kahi kaula, e ʻae ana i ka hoʻoili ʻana i nā memo.
Inā manaʻo mākou he ʻekolu kā mākou mea kākau inoa C1, C2, C3 a me kahi pae i loaʻa nā memo 1, 2, 3, 4, 5, 6, 7, a laila e lawelawe ʻia nā memo e like me ke kiʻi ma lalo nei:
1 -> C1
2 -> C2
3 -> C3
4 -> C1
5 -> C2
6 -> C3
7 -> C1
No ka hoʻokō ʻana i kēia hopena, hoʻohana ʻo Redis Stream i kahi manaʻo i kapa ʻia ʻo Consumer Group. Ua like kēia manaʻo me ka pseudo-subscriber, e loaʻa ana i ka ʻikepili mai kahi kahawai, akā lawelawe maoli ʻia e nā mea kākau inoa he nui i loko o kahi hui, e hāʻawi ana i kekahi mau hōʻoia:
- Hāʻawi ʻia kēlā me kēia memo i kahi mea kākau inoa ʻē aʻe i loko o ka hui.
- I loko o kahi pūʻulu, ʻike ʻia ka poʻe kākau inoa ma ko lākou inoa, ʻo ia ka string case-sensitive. Inā haʻalele ka mea kākau inoa mai ka hui, hiki ke hoʻihoʻi ʻia i ka hui me ka hoʻohana ʻana i kona inoa ponoʻī.
- Ke hahai nei kēlā me kēia Pūʻulu Consumer i ka manaʻo "memo mua i heluhelu ʻole ʻia". Ke noi ka mea kākau inoa i nā memo hou, hiki iā ia ke loaʻa nā memo i hāʻawi mua ʻole ʻia i kekahi mea kākau inoa i loko o ka hui.
- Aia kekahi kauoha e hōʻoia i ka hoʻokō pono ʻana o ka memo e ka mea kākau inoa. A hiki i ke kāhea ʻia ʻana o kēia kauoha, e noho ka memo i noi ʻia ma ke kūlana "pending".
- I loko o ka Consumer Group, hiki i kēlā me kēia mea kākau ke noi i kahi moʻolelo o nā leka i hāʻawi ʻia iā ia, akā ʻaʻole i hoʻokō ʻia (ma ke kūlana "pending")
Ma kahi ʻano, hiki ke hōʻike ʻia ke kūlana o ka hui penei:
+----------------------------------------+
| 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)
+----------------------------------------+
ʻO ka manawa kēia e kamaʻāina ai i nā kauoha nui no ka Consumer Group, ʻo ia hoʻi:
- XGROUP hoʻohana ʻia e hana, luku a mālama i nā hui
- XREADGROUP hoʻohana ʻia e heluhelu i ke kahawai ma o ka hui
- XACK - ʻae kēia kauoha i ka mea kākau inoa e hōʻailona i ka memo i hoʻokō pono ʻia
Ka Hoʻokumu ʻana i ka Pūʻulu Kūʻai
E noʻonoʻo kākou ua loaʻa mua ka mystream. A laila e like ke kauoha hana pūʻulu:
> XGROUP CREATE mystream mygroup $
OK
I ka hana ʻana i kahi hui, pono mākou e hāʻawi i kahi mea ʻike, e hoʻomaka ana e loaʻa i ka hui nā memo. Inā makemake mākou e loaʻa nā memo hou a pau, a laila hiki iā mākou ke hoʻohana i ka mea hōʻike kūikawā $ (e like me kā mākou hiʻohiʻona ma luna). Inā ʻoe e kuhikuhi i ka 0 ma kahi o kahi mea hōʻike kūikawā, a laila e loaʻa nā memo a pau i ka pae i ka hui.
I kēia manawa ua hana ʻia ka hui, hiki iā mākou ke hoʻomaka koke i ka heluhelu ʻana i nā leka me ka hoʻohana ʻana i ke kauoha XREADGROUP. Ua like loa keia kauoha me XREAD a kākoʻo i ke koho BLOCK koho. Eia nō naʻe, aia kahi koho GROUP pono e kuhikuhi mau ʻia me nā manaʻo ʻelua: ka inoa hui a me ka inoa mea kākau. Kākoʻo ʻia ke koho COUNT.
Ma mua o ka heluhelu ʻana i ka pae, e kau i kekahi mau memo ma laila:
> 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
I kēia manawa e hoʻāʻo mākou e heluhelu i kēia kahawai ma o ka hui:
> XREADGROUP GROUP mygroup Alice COUNT 1 STREAMS mystream >
1) 1) "mystream"
2) 1) 1) 1526569495631-0
2) 1) "message"
2) "apple"
Heluhelu ʻia ka ʻōlelo ma luna nei i ka verbatim penei:
"Makemake wau, ka mea kākau inoa ʻo Alice, he lālā o kaʻu hui, e heluhelu i hoʻokahi leka mai koʻu kahawai ʻaʻole i hāʻawi ʻia i kekahi ma mua."
I kēlā me kēia manawa e hana ka mea kākau inoa i kahi hana ma kahi hui, pono ia e hāʻawi i kona inoa, e ʻike kūʻokoʻa iā ia iho i loko o ka hui. Aia kekahi kikoʻī koʻikoʻi ʻē aʻe ma ke kauoha i luna - ka mea hōʻike kūikawā ">". Hoʻopili kēia mea hōʻike kūikawā i nā memo, waiho wale i nā memo i hoʻouna ʻole ʻia ma mua.
Eia kekahi, i nā hihia kūikawā, hiki iā ʻoe ke kuhikuhi i kahi mea hōʻike maoli e like me 0 a i ʻole kekahi mea hōʻike kūpono. Ma keia hihia ke kauoha XREADGROUP e hoʻihoʻi iā ʻoe i kahi moʻolelo o nā memo me ke kūlana "pending" i hāʻawi ʻia i ka mea kākau inoa (Alice) akā ʻaʻole i ʻae ʻia me ka hoʻohana ʻana i ke kauoha. XACK.
Hiki iā mākou ke hoʻāʻo i kēia ʻano ma ke kuhikuhi koke ʻana i ka ID 0, me ka ʻole o ke koho KANAWAI. E ʻike wale mākou i hoʻokahi memo e kali nei, ʻo ia hoʻi, ka leka apple:
> XREADGROUP GROUP mygroup Alice STREAMS mystream 0
1) 1) "mystream"
2) 1) 1) 1526569495631-0
2) 1) "message"
2) "apple"
Eia naʻe, inā mākou e hōʻoia i ka memo i hoʻokō pono ʻia, a laila ʻaʻole ia e hōʻike hou ʻia:
> XACK mystream mygroup 1526569495631-0
(integer) 1
> XREADGROUP GROUP mygroup Alice STREAMS mystream 0
1) 1) "mystream"
2) (empty list or set)
ʻO kēia ka manawa o Bob e heluhelu i kekahi mea:
> 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"
Ua noi ʻo Bob, he lālā o kaʻu hui, ʻaʻole i ʻoi aku ma mua o ʻelua mau leka. Hōʻike wale ke kauoha i nā memo i hoʻouna ʻole ʻia ma muli o ka mea hōʻike kūikawā ">". E like me kāu e ʻike ai, ʻaʻole e hōʻike ʻia ka memo "apple" no ka mea ua hāʻawi ʻia iā Alice, no laila ua loaʻa iā Bob ka "ʻalani" a me ka "strawberry".
Ma kēia ala, hiki iā Alice, Bob, a me nā mea kākau inoa ʻē aʻe o ka hui ke heluhelu i nā memo like ʻole mai ke kahawai hoʻokahi. Hiki iā lākou ke heluhelu i kā lākou mōʻaukala o nā memo i hana ʻole ʻia a i ʻole e kaha i nā memo e like me ka hana ʻana.
Aia kekahi mau mea e hoʻomanaʻo ai:
- I ka manawa e noʻonoʻo ai ka mea kākau inoa he kauoha XREADGROUP, hele kēia memo i ka moku'āina "pending" a hāʻawi ʻia i kēlā mea kākau inoa kikoʻī. ʻAʻole hiki i nā mea kākau inoa ʻē aʻe ke heluhelu i kēia memo.
- Hoʻokumu ʻia nā mea kākau inoa ma ka haʻi mua ʻana, ʻaʻohe pono e hana pono iā lākou.
- Me ke kōkuaʻana o XREADGROUP Hiki iā ʻoe ke heluhelu i nā memo mai nā pae like ʻole i ka manawa like, akā naʻe no kēia hana pono ʻoe e hana mua i nā hui me ka inoa like no kēlā me kēia pae me ka hoʻohana ʻana. XGROUP
Hoʻihoʻi ma hope o ka hāʻule
Hiki i ka mea kākau ke ho'ōla mai ka hemahema a heluhelu hou i kāna papa inoa o nā leka me ke kūlana "pending". Eia naʻe, ma ka honua maoli, hiki i ka poʻe kākau inoa ke hāʻule hope. He aha ka hopena i nā memo paʻa o ka mea kākau inoa inā ʻaʻole hiki i ka mea kākau inoa ke hoʻōla mai kahi hemahema?
Hāʻawi ʻo Consumer Group i kahi hiʻohiʻona i hoʻohana ʻia no nā hihia like - inā pono ʻoe e hoʻololi i ka mea nona nā memo.
ʻO ka mea mua āu e hana ai, ʻo ia ke kāhea i ke kauoha HOOLAHA, e hōʻike ana i nā memo a pau i loko o ka hui me ke kūlana "pending". Ma kona ʻano maʻalahi, ua kapa ʻia ke kauoha me ʻelua mau manaʻo: ka inoa thread a me ka inoa hui:
> XPENDING mystream mygroup
1) (integer) 2
2) 1526569498055-0
3) 1526569506935-0
4) 1) 1) "Bob"
2) "2"
Ua hōʻike ka hui i ka helu o nā memo i hana ʻole ʻia no ka hui holoʻokoʻa a no kēlā me kēia mea kākau inoa. Loaʻa iā mākou ʻo Bob wale nō me ʻelua mau leka koʻikoʻi no ka mea ʻo ka leka wale nō i noi ʻia e Alice ua hōʻoia ʻia me XACK.
Hiki iā mākou ke noi i ka ʻike hou aʻe me ka hoʻohana ʻana i nā manaʻo hou aʻe:
XPENDING {key} {groupname} [{start-id} {end-id} {count} [{consumer-name}]]
{start-id} {end-id} - ka laulā o nā mea hōʻike (hiki iā ʻoe ke hoʻohana i ka "-" a me "+")
{helu} — helu o nā hoʻāʻo hoʻouna
{inoa-mea kūʻai aku} - inoa hui
> 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
I kēia manawa, loaʻa iā mākou nā kikoʻī no kēlā me kēia memo: ID, inoa mea kākau, manawa hana ʻole i milliseconds a hope ka helu o nā hoʻāʻo lawe. Loaʻa iā mākou ʻelua mau memo mai Bob a ua hana ʻole lākou no 74170458 milliseconds, ma kahi o 20 mau hola.
E ʻoluʻolu, ʻaʻohe mea e kāohi iā mākou mai ka nānā ʻana i ke ʻano o ka memo ma ka hoʻohana wale ʻana XRANGE.
> XRANGE mystream 1526569498055-0 1526569498055-0
1) 1) 1526569498055-0
2) 1) "message"
2) "orange"
Pono mākou e hana hou i ka ʻike like ʻelua i nā hoʻopaʻapaʻa. I kēia manawa ua loaʻa iā mākou kekahi manaʻo, hiki iā Alice ke hoʻoholo ma hope o 20 mau hola hoʻomaha, ʻaʻole paha e ola ʻo Bob, a ʻo ka manawa kēia e nīnau ai i kēlā mau memo a hoʻomaka hou i ka hana ʻana iā lākou no Bob. No kēia, hoʻohana mākou i ke kauoha XCLAIM:
XCLAIM {key} {group} {consumer} {min-idle-time} {ID-1} {ID-2} ... {ID-N}
Ke hoʻohana nei i kēia kauoha, hiki iā mākou ke loaʻa i kahi memo "haole" ʻaʻole i hana ʻia ma ka hoʻololi ʻana i ka mea nona ka {consumer}. Eia nō naʻe, hiki iā mākou ke hāʻawi i kahi manawa hana ʻole {min-idle-time}. Kōkua kēia i ka pale ʻana i kahi kūlana kahi e hoʻāʻo ai nā mea kūʻai ʻelua e hoʻololi i ka mea nona nā memo like:
Client 1: XCLAIM mystream mygroup Alice 3600000 1526569498055-0
Clinet 2: XCLAIM mystream mygroup Lora 3600000 1526569498055-0
Na ka mea kūʻai mua e hoʻonohonoho i ka downtime a hoʻonui i ka helu hoʻouna. No laila ʻaʻole hiki i ka mea kūʻai ʻelua ke noi.
> XCLAIM mystream mygroup Alice 3600000 1526569498055-0
1) 1) 1526569498055-0
2) 1) "message"
2) "orange"
Ua hoʻopiʻi maikaʻi ʻia ka leka e Alice, hiki iā ia ke hoʻoponopono i ka leka a hoʻomaopopo iā ia.
Mai ka laʻana i luna, hiki iā ʻoe ke ʻike i kahi noi kūleʻa e hoʻihoʻi i nā ʻike o ka memo ponoʻī. Eia naʻe, ʻaʻole pono kēia. Hiki ke hoʻohana ʻia ke koho JUSTID e hoʻihoʻi i nā memo ID wale nō. Pono kēia inā ʻaʻole ʻoe makemake i nā kikoʻī o ka memo a makemake e hoʻonui i ka hana ʻōnaehana.
Helu hoʻouna
ʻO ka counter āu e ʻike ai ma ka puka HOOLAHA ʻo ia ka helu o ka lawe ʻana i kēlā me kēia memo. Hoʻonui ʻia kēlā counter ma nā ʻano ʻelua: ke noi maikaʻi ʻia kahi leka ma o XCLAIM a i ʻole ke hoʻohana ʻia kahi kelepona XREADGROUP.
He mea maʻamau ka hoʻouna ʻana i kekahi mau memo i nā manawa he nui. ʻO ka mea nui, ʻo ka hoʻokō ʻia ʻana o nā memo a pau. I kekahi manawa, hiki mai nā pilikia i ka wā e hoʻoponopono ai i kahi memo no ka mea ua ʻino ka memo ponoʻī, a i ʻole ka hoʻoili ʻana i ka memo ke kumu o ka hewa i ka code handler. I kēia hihia, ʻike ʻia ʻaʻole hiki i kekahi ke hana i kēia memo. No ka mea, loaʻa iā mākou kahi helu hoʻāʻo hoʻouna, hiki iā mākou ke hoʻohana i kēia counter e ʻike i nā kūlana like. No laila, i ka manawa e hiki ai ka helu hoʻouna i ka helu kiʻekiʻe āu i kuhikuhi ai, ʻoi aku ka naʻauao e kau i kēlā memo ma kahi pae ʻē aʻe a hoʻouna i kahi leka i ka luna hoʻonohonoho.
Mokuʻāina Thread
hui XINFO hoʻohana ʻia e noi i nā ʻike like ʻole e pili ana i kahi thread a me nā hui. No ka laʻana, ua like ke ʻano o kahi kauoha kumu:
> 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"
Hōʻike ke kauoha ma luna i ka ʻike maʻamau e pili ana i ke kahawai i kuhikuhi ʻia. I kēia manawa he laʻana paʻakikī iki:
> 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
Hōʻike ke kauoha ma luna i ka ʻike maʻamau no nā hui āpau o ka pae i kuhikuhi ʻia
> 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
Hōʻike ke kauoha ma luna i ka ʻike no nā mea kākau inoa a pau o ke kahawai a me ka hui i ʻōlelo ʻia.
Inā poina iā ʻoe ke kauoha syntax, e noi wale i ke kauoha ponoʻī no ke kōkua:
> 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.
Ka palena nui o ke kahawai
ʻAʻole makemake nā noi he nui e hōʻiliʻili i ka ʻikepili i loko o kahi kahawai mau loa. He mea maʻamau ka loaʻa ʻana o ka helu kiʻekiʻe o nā memo i ʻae ʻia i kēlā me kēia pae. Ma nā hihia ʻē aʻe, pono e hoʻoneʻe i nā memo a pau mai kahi thread i kahi hale kūʻai hoʻomau ʻē aʻe ke hiki i ka nui o ka pae i ʻōlelo ʻia. Hiki iā ʻoe ke kaupalena i ka nui o kahi kahawai me ka hoʻohana ʻana i ka parameter MAXLEN ma ke kauoha 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"
I ka hoʻohana ʻana iā MAXLEN, holoi ʻia nā moʻolelo kahiko i ka wā e hiki ai lākou i kahi lōʻihi i ʻōlelo ʻia, no laila he mau ka nui o ke kahawai. Eia naʻe, ʻaʻole hiki ke ʻoki ʻia i kēia hihia ma ke ala maikaʻi loa i ka hoʻomanaʻo ʻana o Redis. Hiki iā ʻoe ke hoʻomaikaʻi i ke kūlana penei:
XADD mystream MAXLEN ~ 1000 * ... entry fields here ...
ʻO ka ~ hoʻopaʻapaʻa ma ka laʻana ma luna nei, ʻaʻole pono mākou e kaupalena i ka lōʻihi o ke kahawai i kahi waiwai kikoʻī. Ma kā mākou laʻana, hiki i kēia ke helu ʻoi aku ma mua o a i ʻole like me 1000 (no ka laʻana, 1000, 1010, a i ʻole 1030). Ua hōʻike pololei mākou makemake mākou i kā mākou kahawai e mālama ma kahi o 1000 mau moʻolelo. ʻOi aku ka maikaʻi o ka hoʻokele hoʻomanaʻo ʻana i loko o Redis.
Aia kekahi hui kaʻawale XTRIM, e hana ana i ka mea like:
> XTRIM mystream MAXLEN 10
> XTRIM mystream MAXLEN ~ 10
Ka mālama mau ʻana a me ka hana hou ʻana
Hoʻopili like ʻia ʻo Redis Stream i nā nodes kauā a mālama ʻia i nā faila e like me AOF (paʻi kiʻi o nā ʻikepili āpau) a me RDB (log o nā hana kākau āpau). Kākoʻo ʻia ka hana hou ʻana o ka mokuʻāina Consumer Groups. No laila, inā he memo i loko o ke kūlana "pending" ma ka node haku, a laila ma nā nodes kauā e loaʻa ke kūlana like.
Ke wehe ʻana i kēlā me kēia mea mai kahi kahawai
Aia kekahi kauoha kūikawā e holoi i nā memo XDEL. Loaʻa ke kauoha i ka inoa o ke kaula i ukali ʻia e nā memo ID e holoi ʻia:
> 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"
Ke hoʻohana nei i kēia kauoha, pono ʻoe e noʻonoʻo ʻaʻole e hoʻokuʻu koke ʻia ka hoʻomanaʻo maoli.
Kolo ka lōʻihi kahawai
ʻO ka ʻokoʻa ma waena o nā kahawai a me nā ʻōnaehana data Redis ʻē aʻe ke loaʻa ʻole nā mea ʻē aʻe o nā ʻikepili ʻē aʻe i loko o lākou, ma ke ʻano he hopena ʻaoʻao, e hoʻoneʻe ʻia ke ʻano ʻikepili mai ka hoʻomanaʻo. No laila, no ka laʻana, e hoʻopau loa ʻia ka pūʻulu i koho ʻia i ka wā e wehe ai ke kelepona ZREM i ka mea hope. Akā, ʻae ʻia nā kaula e hoʻomanaʻo me ka ʻole o nā mea i loko.
hopena
He kūpono ʻo Redis Stream no ka hoʻokumu ʻana i nā mea hoʻolaha memo, nā queues memo, ka hoʻopaʻa inoa ʻana, a me nā ʻōnaehana kamaʻilio mālama moʻolelo.
E like me kaʻu i ʻōlelo ai
Source: www.habr.com