Redis Stream - သင့်စာတိုပေသပို့မဟုစနစ်မျာသ၏ ယုံကဌည်စိတ်ချရမဟုနဟင့် အတိုင်သအတာမျာသ

Redis Stream - သင့်စာတိုပေသပို့မဟုစနစ်မျာသ၏ ယုံကဌည်စိတ်ချရမဟုနဟင့် အတိုင်သအတာမျာသ

Redis Stream သည် Redis ဗာသရဟင်သ 5.0 တလင် မိတ်ဆက်ထာသသော စိတ္တဇဒေတာအမျိုသအစာသအသစ်ဖဌစ်သည်။
သဘောတရာသအရ၊ Redis Stream သည် သင်ထည့်သလင်သနိုင်သည့်စာရင်သတစ်ခုဖဌစ်သည်။ ထည့်သလင်သမဟုတစ်ခုစီတလင် သီသသန့်သတ်မဟတ်မဟုတစ်ခုရဟိသည်။ မူရင်သအာသဖဌင့်၊ ID သည် အလိုအလျောက်ထုတ်ပေသပဌီသ အချိန်တံဆိပ်တစ်ခု ပါဝင်သည်။ ထို့ကဌောင့်၊ သင်သည် Unix "tail -f" command သည် မဟတ်တမ်သဖိုင်ကိုဖတ်ပဌီသ ဒေတာအသစ်ကို စောင့်နေစဉ်တလင် ရပ်တန့်သလာသသကဲ့သို့ stream တလင်ရောက်ရဟိသည်နဟင့်အမျဟ ဒေတာအသစ်မျာသကို အချိန်နဟင့်အမျဟ သင်မေသမဌန်သနိုင်သည် သို့မဟုတ် ဒေတာအသစ်မျာသကို လက်ခံရရဟိနိုင်ပါသည်။ "tail -f" လုပ်ငန်သစဉ်မျာသစလာသည် တစ်ခုနဟင့်တစ်ခု ကလဲလလဲမဟုမရဟိဘဲ ဖိုင်တစ်ခုကို တစ်ပဌိုင်နက်ဖတ်နိုင်သကဲ့သို့ သုံသစလဲသူမျာသစလာသည် ကဌိုသတစ်ခုအာသ တစ်ချိန်တည်သတလင် နာသထောင်နိုင်သည်ကို သတိပဌုပါ။

ဒေတာအမျိုသအစာသအသစ်၏ အကျိုသကျေသဇူသအာသလုံသကို နာသလည်ရန်၊ Redis Stream ၏ လုပ်ဆောင်နိုင်စလမ်သကို တစ်စိတ်တစ်ပိုင်သပုံတူပလာသထာသသည့် ကာလရဟည်ကဌာတည်ရဟိနေသော Redis တည်ဆောက်ပုံမျာသကို အမဌန်ကဌည့်ကဌပါစို့။

PUB/SUB ကို ပဌန်စပါ။

Redis Pub/Sub သည် သင့်သော့တန်ဖိုသစတိုသတလင် တည်ဆောက်ထာသပဌီသသာသ ရိုသရဟင်သသော စာတိုပေသပို့မဟုစနစ်တစ်ခုဖဌစ်သည်။ သို့သော်၊ ရိုသရဟင်သမဟုသည် စျေသနဟုန်သတစ်ခုဖဌင့် ရောက်လာသည်-

  • ထုတ်ဝေသူသည် အကဌောင်သတစ်ခုခုကဌောင့် ပျက်ကလက်ပါက ၎င်သ၏စာရင်သသလင်သသူအာသလုံသကို ဆုံသရဟုံသမည်ဖဌစ်သည်။
  • ထုတ်ဝေသူသည် ၎င်သ၏စာရင်သသလင်သသူအာသလုံသ၏ လိပ်စာအတိအကျကို သိရန် လိုအပ်သည်။
  • ဒေတာကို လုပ်ဆောင်သည်ထက် ပိုမိုမဌန်ဆန်စလာ လလဟင့်တင်ပါက ထုတ်ဝေသူသည် ၎င်သ၏စာရင်သသလင်သသူမျာသကို အလုပ်နဟင့် ဝန်ပိုစေနိုင်သည်။
  • စာရင်သသလင်သသူမည်မျဟနဟင့် ကမက်ဆေ့ချ်ကို မည်မျဟလျင်မဌန်စလာ လုပ်ဆောင်နိုင်သည်ဖဌစ်စေ ထုတ်ဝေသူ၏ ကဌာသခံစာအာသ ထုတ်ဝေပဌီသသည်နဟင့် ချက်ချင်သပင် မက်ဆေ့ချ်ကို ဖျက်လိုက်ပါသည်။
  • စာရင်သသလင်သသူအာသလုံသသည် တစ်ချိန်တည်သတလင် မက်ဆေ့ဂျ်ကို လက်ခံရရဟိမည်ဖဌစ်သည်။ စာရင်သသလင်သသူမျာသသည် တူညီသောမက်ဆေ့ချ်ကို လုပ်ဆောင်ခဌင်သအစီအစဥ်အပေါ် တစ်နည်သနည်သနဟင့် သဘောတူညီရပါမည်။
  • စာရင်သသလင်သသူသည် မက်ဆေ့ချ်ကို အောင်မဌင်စလာ လုပ်ဆောင်ပဌီသကဌောင်သ အတည်ပဌုရန် တပ်ဆင်ထာသသည့် ယန္တရာသ မရဟိပါ။ စာရင်သသလင်သသူတစ်ညသသည် မက်ဆေ့ဂျ်ကို လက်ခံရရဟိပဌီသ လုပ်ဆောင်နေစဉ်အတလင်သ ပျက်သလာသပါက၊ ထုတ်ဝေသူသည် ၎င်သအကဌောင်သကို သိရဟိမည်မဟုတ်ပါ။

စာရင်သပဌန်တင်ပါ။

Redis List သည် read commands မျာသကို ပိတ်ဆို့ခဌင်သကို ပံ့ပိုသပေသသည့် ဒေတာဖလဲ့စည်သပုံဖဌစ်သည်။ စာရင်သ၏အစ သို့မဟုတ် အဆုံသမဟ မက်ဆေ့ဂျ်မျာသကို ထည့်သလင်သဖတ်နိုင်သည်။ ကဖလဲ့စည်သပုံအပေါ်အခဌေခံ၍ သင်၏ဖဌန့်ဝေမဟုစနစ်အတလက် ကောင်သမလန်သော stack သို့မဟုတ် တန်သစီခဌင်သကို ပဌုလုပ်နိုင်ပဌီသ၊ ကိစ္စအမျာသစုတလင် ၎င်သသည် လုံလောက်မည်ဖဌစ်သည်။ Redis Pub/Sub မဟ အဓိက ကလာခဌာသချက်မျာသ-

  • မက်ဆေ့ချ်ကို သုံသစလဲသူတစ်ညသထံ ပေသပို့သည်။ ပထမဆုံသဖတ်ရန်-ပိတ်ဆို့ထာသသောဖောက်သည်သည် ဒေတာကို ညသစလာလက်ခံရရဟိမည်ဖဌစ်သည်။
  • Clint သည် မက်ဆေ့ဂျ်တစ်ခုစီအတလက် ဖတ်ရဟုခဌင်သလုပ်ငန်သကို စတင်ရပါမည်။ စာရင်သသည် ဖောက်သည်မျာသအကဌောင်သ ဘာမဟမသိပါ။
  • တစ်စုံတစ်ယောက်က ၎င်သတို့ကိုဖတ်ခဌင်သ သို့မဟုတ် ပဌတ်သာသစလာ မဖျက်မချင်သ မက်ဆေ့ဂျ်မျာသကို သိမ်သဆည်သထာသသည်။ အကယ်၍ သင်သည် ဒေတာဒစ်သို့ ကူသချရန် Redis ဆာဗာကို စီစဉ်သတ်မဟတ်ပါက၊ စနစ်၏ ယုံကဌည်စိတ်ချရမဟုသည် သိသိသာသာ တိုသလာပါသည်။

တိုက်ရိုက်ထုတ်လလဟင့်ရန် နိဒါန်သ

ထုတ်လလဟင့်မဟုတစ်ခုသို့ ထည့်သလင်သခဌင်သ။

အဖလဲ့ XADD ထုတ်လလဟင့်မဟုသို့ ဝင်ခလင့်အသစ်တစ်ခု ထပ်ထည့်သည်။ မဟတ်တမ်သတစ်ခုသည် စာကဌောင်သတစ်ခုမျဟသာမက၊ ၎င်သတလင် တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသောသော့တန်ဖိုသအတလဲမျာသပါရဟိသည်။ ထို့ကဌောင့်၊ ထည့်သလင်သမဟုတစ်ခုစီသည် ဖလဲ့စည်သတည်ဆောက်ထာသပဌီသဖဌစ်ပဌီသ CSV ဖိုင်တစ်ခု၏ ဖလဲ့စည်သပုံနဟင့် ဆင်တူသည်။

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

အထက်နမူနာတလင်၊ ကျလန်ုပ်တို့သည် အမည် (သော့) “mystream” နဟင့် “sensor-id” နဟင့် “temperature” တန်ဖိုသမျာသ “1234” နဟင့် “19.8” အသီသသီသရဟိသော stream သို့ အကလက်နဟစ်ခုကို ပေါင်သထည့်ပါသည်။ ဒုတိယအငဌင်သအခုံအနေဖဌင့်၊ ကလန်မန်သသည် entry တလင်သတ်မဟတ်ပေသမည့် identifier တစ်ခုကိုယူသည် - က identifier သည် stream အတလင်သရဟိ entry တစ်ခုစီကို သီသခဌာသခလဲခဌာသသတ်မဟတ်ပေသပါသည်။ သို့သော်လည်သ၊ ကကိစ္စတလင် Redis သည် ကျလန်ုပ်တို့အတလက် ID အသစ်တစ်ခုထုတ်ပေသစေလိုသောကဌောင့် * ကိုကျော်ဖဌတ်ခဲ့သည်။ ID အသစ်တစ်ခုစီ တိုသလာမည်။ ထို့ကဌောင့်၊ အသစ်ဝင်ရောက်မဟုတိုင်သတလင် ယခင်ထည့်သလင်သမဟုမျာသနဟင့် ဆက်စပ်၍ ပိုမိုမဌင့်မာသသော identifier ရဟိပါမည်။

အမဟတ်အသာသဖော်မတ်

အမိန့်ဖဌင့် ဝင်ခလင့် ID ကို ပဌန်ပေသသည်။ XADDအပိုင်သနဟစ်ပိုင်သပါဝင်သည်-

{millisecondsTime}-{sequenceNumber}

မီလီစက္ကန့်အချိန် — Unix အချိန်သည် မီလီစက္ကန့်မျာသ (Redis ဆာဗာအချိန်)။ သို့သော်၊ လက်ရဟိအချိန်သည် ယခင်ရိုက်ကူသခဲ့သည့်အချိန်ထက် တူညီနေပါက သို့မဟုတ် ယခင်ရိုက်ကူသမဟု၏ အချိန်တံဆိပ်ကို အသုံသပဌုမည်ဖဌစ်သည်။ ထို့ကဌောင့်၊ ဆာဗာအချိန်သည် အချိန်သို့ပဌန်သလာသပါက၊ ခလဲခဌာသသတ်မဟတ်သူအသစ်သည် တိုသမဌင့်မဟုပိုင်ဆိုင်မဟုကို ဆက်လက်ထိန်သသိမ်သထာသမည်ဖဌစ်သည်။

sequenceNumber တူညီသော မီလီစက္ကန့်အတလင်သ ဖန်တီသထာသသော မဟတ်တမ်သမျာသအတလက် အသုံသပဌုသည်။ sequenceNumber ယခင်ဝင်ရောက်မဟုထက် 1 တိုသလာပါမည်။ အကဌောင်သမဟာ၊ sequenceNumber 64 bits အရလယ်အစာသရဟိပဌီသ လက်တလေ့တလင် သင်သည် တစ်မီလီစက္ကန့်အတလင်သ ထုတ်ပေသနိုင်သည့် မဟတ်တမ်သအရေအတလက်အပေါ် ကန့်သတ်ချက်သို့ မ၀င်သင့်ပါ။

ထိုသို့သော ခလဲခဌာသသတ်မဟတ်မဟုပုံစံသည် ပထမတစ်ချက်တလင် ထူသဆန်သပုံရသည်။ အယုံအကဌည်မရဟိသော စာဖတ်သူသည် အချိန်သည် အဘယ်ကဌောင့် သတ်မဟတ်ဖော်ပဌမဟု၏ တစ်စိတ်တစ်ပိုင်သဖဌစ်သည်ကို အံ့သဌမိပေမည်။ အကဌောင်သရင်သမဟာ Redis stream မျာသသည် ID ဖဌင့် အပိုင်သအခဌာသမေသခလန်သမျာသကို ပံ့ပိုသပေသသောကဌောင့်ဖဌစ်သည်။ အထောက်အထာသသည် မဟတ်တမ်သဖန်တီသသည့်အချိန်နဟင့် ဆက်စပ်နေသောကဌောင့်၊ ၎င်သသည် အချိန်အပိုင်သအခဌာသမျာသကို မေသမဌန်သရန် ဖဌစ်နိုင်သည်။ command ကိုကဌည့်တဲ့အခါ တိကျတဲ့ ဥပမာတစ်ခုကို ကဌည့်ပါမယ်။ XRANGE.

အကဌောင်သတစ်ခုခုကဌောင့် အသုံသပဌုသူသည် ၎င်သ၏ကိုယ်ပိုင် identifier ကို သတ်မဟတ်ရန် လိုအပ်ပါက၊ ဥပမာ၊ အချို့သော ပဌင်ပစနစ်နဟင့် ဆက်စပ်နေပါက၊ ၎င်သကို command သို့ပေသပို့နိုင်ပါသည်။ XADD * အစာသ အောက်ပါပုံအတိုင်သ

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

ကကိစ္စတလင် သင်သည် ID တိုသခဌင်သကို သင်ကိုယ်တိုင် စောင့်ကဌည့်ရမည်ကို သတိပဌုပါ။ ကျလန်ုပ်တို့၏ဥပမာတလင်၊ အနိမ့်ဆုံသသတ်မဟတ်သူသည် "0-1" ဖဌစ်သောကဌောင့် command သည် "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

ထုတ်လလဟင့်မဟုတစ်ခုအတလက် မဟတ်တမ်သအရေအတလက်

command ကိုအသုံသပဌုခဌင်သဖဌင့် stream တစ်ခုရဟိ record အရေအတလက်ကို ရယူနိုင်သည်။ XLEN. ကျလန်ုပ်တို့၏ ဥပမာအာသဖဌင့်၊ က command သည် အောက်ပါတန်ဖိုသကို ပဌန်ပေသလိမ့်မည်-

> XLEN somestream
(integer) 2

အပိုင်သအခဌာသမေသခလန်သမျာသ - XRANGE နဟင့် XREVRANGE

အပိုင်သအခဌာသအလိုက် ဒေတာတောင်သဆိုရန်၊ အပိုင်သအခဌာသ၏ အစနဟင့် အဆုံသကို ခလဲခဌာသသတ်မဟတ်မဟုနဟစ်ခုကို သတ်မဟတ်ရန် လိုအပ်သည်။ ပဌန်ပေသသည့်အပိုင်သသည် နယ်နိမိတ်မျာသအပါအဝင် အစိတ်အပိုင်သအာသလုံသ ပါဝင်မည်ဖဌစ်သည်။ ထုတ်လလဟင့်မဟုတလင် အသေသငယ်ဆုံသ (ပထမမဟတ်တမ်သ) နဟင့် အကဌီသဆုံသ (နောက်ဆုံသစံချိန်) ခလဲခဌာသသတ်မဟတ်မဟုဟု အဓိပ္ပာယ်ရသော အထူသအမဟတ်အသာသ “-” နဟင့် “+” နဟစ်ခုလည်သ ရဟိပါသည်။ အောက်ပါနမူနာသည် ထုတ်လလဟင့်မဟုအာသလုံသကို စာရင်သပဌုစုပေသမည်ဖဌစ်သည်။

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

ပဌန်ပေသထာသသော မဟတ်တမ်သတစ်ခုစီသည် ဒဌပ်စင်နဟစ်ခု၏ ခင်သကျင်သတစ်ခုဖဌစ်သည်- အမဟတ်အသာသပဌုခဌင်သနဟင့် သော့တန်ဖိုသအတလဲမျာသစာရင်သ။ မဟတ်တမ်သသတ်မဟတ်ခဌင်သမျာသသည် အချိန်နဟင့်သက်ဆိုင်သည်ဟု ကျလန်ုပ်တို့ပဌောထာသပဌီသဖဌစ်သည်။ ထို့ကဌောင့် ကျလန်ုပ်တို့သည် အချိန်အတိုင်သအတာတစ်ခု၏ အတိုင်သအတာတစ်ခုအာသ တောင်သဆိုနိုင်ပါသည်။ သို့ရာတလင်၊ ကျလန်ုပ်တို့သည် တောင်သဆိုချက်တလင် သတ်မဟတ်သတ်မဟတ်မဟု အပဌည့်အစုံမဟုတ်သော်လည်သ Unix အချိန်ကိုသာ သတ်မဟတ်နိုင်ပဌီသ ဆက်စပ်အပိုင်သကို ချန်လဟပ်ထာသသည်။ sequenceNumber. ခလဲခဌာသသတ်မဟတ်မဟု၏ ချန်လဟပ်ထာသသောအပိုင်သကို အပိုင်သအခဌာသ၏အစတလင် သုညအဖဌစ် အလိုအလျောက်သတ်မဟတ်မည်ဖဌစ်ပဌီသ အပိုင်သအခဌာသ၏အဆုံသတလင် ဖဌစ်နိုင်ချေအမျာသဆုံသတန်ဖိုသအဖဌစ် သတ်မဟတ်မည်ဖဌစ်သည်။ အောက်တလင် နဟစ်မီလီစက္ကန့်အကလာအဝေသကို သင်တောင်သဆိုနိုင်ပုံ ဥပမာတစ်ခုဖဌစ်သည်။

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

ကျလန်ုပ်တို့တလင် ကအကလာအဝေသတလင် ထည့်သလင်သမဟုတစ်ခုသာ ရဟိသည်၊ သို့သော် အစစ်အမဟန်ဒေတာအတလဲမျာသတလင် ပဌန်ပေသသည့်ရလဒ်သည် ကဌီသမာသနိုင်သည်။ ဒီအတလက်ကဌောင့် XRANGE COUNT ရလေသချယ်မဟုကို ထောက်ခံသည်။ ပမာဏကို သတ်မဟတ်ခဌင်သဖဌင့်၊ ကျလန်ုပ်တို့သည် ပထမဆုံသ N မဟတ်တမ်သမျာသကို ရိုသရိုသရဟင်သရဟင်သ ရရဟိနိုင်ပါသည်။ အကယ်၍ ကျလန်ုပ်တို့သည် နောက်ထပ် N မဟတ်တမ်သမျာသ (pagination) ကို ရယူရန် လိုအပ်ပါက နောက်ဆုံသရရဟိထာသသော ID ကို အသုံသပဌု၍ ၎င်သကို တိုသမဌဟင့်နိုင်သည်။ sequenceNumber တစ်ခုပဌီသတစ်ခု ထပ်မေသပါ။ အောက်ပါ ဥပမာတလင် ကအရာကို ကဌည့်ကဌပါစို့။ ကျလန်ုပ်တို့သည် ဒဌပ်စင် 10 ခုကို စတင်ထည့်သလင်သပါသည်။ XADD (mystream သည် အစိတ်အပိုင်သ 10 ခုနဟင့် ပဌည့်နေပဌီဟု ယူဆပါသည်။) command တစ်ခုလျဟင် ဒဌပ်စင် 2 ခု ရယူခဌင်သ ထပ်ခါထပ်ခါ စတင်ရန်၊ ကျလန်ုပ်တို့သည် အကလာအဝေသ အပဌည့်ဖဌင့် စတင်သော်လည်သ COUNT သည် 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"

နောက်ထပ်ဒဌပ်စင်နဟစ်ခုဖဌင့် ထပ်တလဲလဲ ဆက်လက်လုပ်ဆောင်ရန်၊ ကျလန်ုပ်တို့ လက်ခံရရဟိထာသသော နောက်ဆုံသ ID ကို ရလေသချယ်ရန် လိုအပ်ပါသည်၊ ဆိုလိုသည်မဟာ 1519073279157-0 နဟင့် 1 သို့ ထည့်ရန် လိုအပ်သည် sequenceNumber.
ကအခဌေအနေတလင် 1519073279157-1 တလင် ရရဟိလာသော ID ကို ယခုခေါ်ဆိုမဟုအတလက် အပိုင်သအခဌာသအငဌင်သအခုံအသစ်၏ အစအသစ်အဖဌစ် ယခုအသုံသပဌုနိုင်ပါပဌီ 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"

နောက် ... ပဌီသတော့။ ရဟုပ်ထလေသနေလို့ပါ။ XRANGE ရဟာဖလေရန် O(log(N)) ဖဌစ်ပဌီသ၊ ထို့နောက် Mဒဌပ်စင်မျာသကို ပဌန်ပေသရန် O(M)၊ ထို့နောက် ထပ်ခါထပ်ခါ အဆင့်တစ်ခုစီသည် မဌန်ဆန်သည်။ ဒါကဌောင့် အသုံသပဌု XRANGE စီသကဌောင်သမျာသကို ထိထိရောက်ရောက် ထပ်ခါထပ်ခါ ပဌုလုပ်နိုင်ပါသည်။

အဖလဲ့ XREVRANGE ညီမျဟသည်။ XRANGEသို့သော် ဒဌပ်စင်မျာသကို ပဌောင်သပဌန်ဖဌင့် ပဌန်ပေသသည်-

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

အမိန့်ကို သတိပဌုပါ။ XREVRANGE အပိုင်သအခဌာသအငဌင်သပလာသမဟုမျာသကို စတင်ပဌီသ ပဌောင်သပဌန်အစီအစဥ်တလင် ရပ်လိုက်ပါ။

XREAD ကို အသုံသပဌု၍ စာအသစ်မျာသကို ဖတ်ခဌင်သ။

မကဌာခဏဆိုသလို ထုတ်လလဟင့်မဟုတစ်ခုသို့ စာရင်သသလင်သခဌင်သနဟင့် မက်ဆေ့ချ်အသစ်မျာသသာ လက်ခံခဌင်သမဟ ပေါ်ပေါက်လာတတ်သည်။ ကအယူအဆသည် Redis Pub/Sub သို့မဟုတ် Redis List ကို ပိတ်ဆို့ခဌင်သ နဟင့် ဆင်တူပုံရသော်လည်သ Redis Stream ကိုအသုံသပဌုပုံတလင် အခဌေခံကလဲပဌာသချက်မျာသ ရဟိပါသည်။

  1. မက်ဆေ့ဂျ်အသစ်တစ်ခုစီကို ပုံမဟန်အာသဖဌင့် စာရင်သသလင်သသူတိုင်သထံ ပေသပို့ပါသည်။ ကအပဌုအမူသည် မက်ဆေ့ချ်အသစ်ကို စာရင်သသလင်သသူ တစ်ညသတည်သသာ ဖတ်နိုင်စေမည့် Redis List ကို ပိတ်ဆို့ထာသခဌင်သနဟင့် ကလဲပဌာသသည်။
  2. Redis Pub/Sub တလင် မက်ဆေ့ဂျ်မျာသအာသလုံသကို မေ့သလာသပဌီသ ဘယ်တော့မဟ မတည်မဌဲနေသော်လည်သ၊ တိုက်ရိုက်လလဟင့်ခဌင်သတလင် မက်ဆေ့ချ်အာသလုံသကို အကန့်အသတ်မရဟိ ထိန်သသိမ်သထာသပါသည် (ဖောက်သည်က ရဟင်သရဟင်သလင်သလင်သ ဖျက်ပစ်ခဌင်သမပဌုပါက)။
  3. Redis Stream သည် သင့်အာသ ထုတ်လလဟင့်မဟုတစ်ခုအတလင်သ မက်ဆေ့ချ်မျာသထံသို့ ကလဲပဌာသစလာဝင်ရောက်ခလင့်ကို ခလင့်ပဌုပေသသည်။ တိကျသော စာရင်သသလင်သသူသည် ၎င်သတို့၏ ကိုယ်ရေသကိုယ်တာ မက်ဆေ့ဂျ်မဟတ်တမ်သကိုသာ မဌင်နိုင်သည်။

သင်သည် စာတလဲတစ်ခုသို့ စာရင်သသလင်သနိုင်ပဌီသ အမိန့်ကို အသုံသပဌု၍ မက်ဆေ့ချ်အသစ်မျာသကို လက်ခံနိုင်သည်။ XREAD. အဲဒါထက် နည်သနည်သပိုရဟုပ်ထလေသတယ်။ XRANGEဒါကဌောင့် ရိုသရဟင်သတဲ့ ဥပမာတလေနဲ့ အရင်စပါမယ်။

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

အထက်ဖော်ပဌပါ ဥပမာသည် ပိတ်ဆို့ခဌင်သမဟုတ်သော ပုံစံကို ပဌသထာသသည်။ XREAD. COUNT ရလေသချယ်မဟုသည် ရလေသချယ်နိုင်သည်ဟု သတိပဌုပါ။ အမဟန်မဟာ၊ တစ်ခုတည်သသော လိုအပ်သည့် command option မဟာ သက်ဆိုင်ရာ အမျာသဆုံသ identifier နဟင့်အတူ stream မျာသစာရင်သကို သတ်မဟတ်ပေသသည့် STREAMS ရလေသချယ်မဟုဖဌစ်သည်။ ကျလန်ုပ်တို့သည် “STREAMS mystream 0” ဟုရေသသာသခဲ့သည် - ကျလန်ုပ်တို့သည် “0-0” ထက်ကဌီသသောသတ်မဟတ်စနစ်ဖဌင့် mystream စီသကဌောင်သ၏မဟတ်တမ်သအာသလုံသကို လက်ခံလိုပါသည်။ ဥပမာမဟ သင်တလေ့မဌင်ရသည့်အတိုင်သ၊ command သည် thread အမျာသအပဌာသကို တချိန်တည်သတလင် စာရင်သသလင်သနိုင်သောကဌောင့် thread ၏ အမည်ကို ပဌန်ပေသပါသည်။ ဥပမာ "STREAMS mystream otherstream 0 0" ဟု ရေသနိုင်သည်။ STREAMS ရလေသချယ်မဟုပဌီသနောက် ကျလန်ုပ်တို့သည် လိုအပ်သော ထုတ်လလဟင့်မဟုအာသလုံသ၏ အမည်မျာသကို ညသစလာပေသကာ ခလဲခဌာသသတ်မဟတ်သည့်စာရင်သတစ်ခုသာ လိုအပ်ကဌောင်သ ကျေသဇူသပဌု၍ သတိပဌုပါ။

ကရိုသရဟင်သသောပုံစံတလင် command နဟင့်နဟိုင်သယဟဉ်ပါကထူသခဌာသသောအရာမရဟိပါ။ XRANGE. ဒါပေမယ့် စိတ်ဝင်စာသဖို့ကောင်သတာက လလယ်လလယ်ကူကူ လဟည့်လို့ရတယ်။ XREAD Blocking command သို့ BLOCK အကဌောင်သပဌချက်ကို သတ်မဟတ်ခဌင်သ-

> XREAD BLOCK 0 STREAMS mystream $

အထက်ဖော်ပဌပါ ဥပမာတလင်၊ BLOCK ရလေသချယ်မဟုအသစ်ကို 0 မီလီစက္ကန့်ဖဌင့် အချိန်လလန်သတ်မဟတ်ထာသသည် (၎င်သသည် အကန့်အသတ်မရဟိစောင့်ဆိုင်သခဌင်သကို ဆိုလိုသည်)။ ထို့အပဌင်၊ mystream စီသကဌောင်သအတလက် ပုံမဟန်သတ်မဟတ်မဟုစနစ်ကို ဖဌတ်သန်သမည့်အစာသ အထူသသတ်မဟတ်သူ $ ကို ကျော်သလာသခဲ့သည်။ ကအထူသသတ်မဟတ်ချက်ကို ဆိုလိုသည်။ XREAD mystream ရဟိ အမျာသဆုံသ identifier ကို identifier အဖဌစ် အသုံသပဌုရပါမည်။ ထို့ကဌောင့် ကျလန်ုပ်တို့ စတင်နာသထောင်သည့်အချိန်မဟစပဌီသ မက်ဆေ့ဂျ်အသစ်မျာသကိုသာ လက်ခံရရဟိပါမည်။ အချို့သောနည်သလမ်သမျာသတလင်၎င်သသည် Unix "tail -f" command နဟင့်ဆင်တူသည်။

BLOCK option ကိုအသုံသပဌုသောအခါတလင် အထူသသတ်မဟတ်သူ $ ကိုအသုံသပဌုရန်မလိုအပ်ကဌောင်သ သတိပဌုပါ။ ထုတ်လလဟင့်မဟုတလင် ရဟိပဌီသသာသ မည်သည့် identifier ကိုမဆို အသုံသပဌုနိုင်ပါသည်။ အကယ်၍ အဖလဲ့သည် ကျလန်ုပ်တို့၏တောင်သဆိုမဟုကို ပိတ်ဆို့ခဌင်သမရဟိဘဲ ချက်ချင်သဆောင်ရလက်ပေသနိုင်ပါက ၎င်သသည် ထိုသို့လုပ်ဆောင်မည်၊ သို့မဟုတ်ပါက ၎င်သသည် ပိတ်ဆို့သလာသမည်ဖဌစ်သည်။

ပိတ်ဆို့ခဌင်သ။ XREAD စာတလဲမျာသစလာကိုလည်သ တစ်ပဌိုင်နက် နာသထောင်နိုင်သည်၊ ၎င်သတို့၏ အမည်မျာသကို သင်သတ်မဟတ်ရန် လိုအပ်ပါသည်။ ကကိစ္စတလင်၊ command သည် ဒေတာလက်ခံရရဟိသည့် ပထမဆုံသစီသကဌောင်သ၏မဟတ်တမ်သကို ပဌန်ပေသလိမ့်မည်။ ပေသထာသသောစာတလဲအတလက် ပိတ်ဆို့ထာသသော ပထမဆုံသစာရင်သသလင်သသူသည် ဒေတာကို ညသစလာရရဟိမည်ဖဌစ်သည်။

စာသသုံသသူအုပ်စုမျာသ

အချို့သော လုပ်ငန်သဆောင်တာမျာသတလင်၊ စာတလဲတစ်ခုအတလင်သ စာရင်သသလင်သသူ ဝင်ရောက်ခလင့်ကို ကန့်သတ်လိုပါသည်။ ၎င်သသည် အသုံသဝင်နိုင်သည့် ဥပမာတစ်ခုသည် စာတလဲတစ်ခုမဟ မတူညီသော မက်ဆေ့ချ်မျာသကို လက်ခံရရဟိမည့် အလုပ်သမာသမျာသနဟင့် မက်ဆေ့ချ်တန်သစီခဌင်သဖဌစ်ပဌီသ မက်ဆေ့ချ်လုပ်ဆောင်ခဌင်သကို အတိုင်သအတာအထိ ခလင့်ပဌုပေသမည်ဖဌစ်သည်။

ကျလန်ုပ်တို့တလင် စာရင်သသလင်သသူ သုံသညသ C1၊ C2၊ C3 နဟင့် 1၊ 2၊ 3၊ 4၊ 5၊ 6၊ 7 ပါရဟိသော စာတလဲတစ်ခုနဟင့် မက်ဆေ့ချ်မျာသကို အောက်ဖော်ပဌပါပုံတလင်အတိုင်သ လုပ်ဆောင်နိုင်လိမ့်မည်-

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

ကအကျိုသသက်ရောက်မဟုကိုရရဟိရန် Redis Stream သည် Consumer Group ဟုခေါ်သော အယူအဆကိုအသုံသပဌုသည်။ ကအယူအဆသည် ထုတ်လလဟင့်မဟုတစ်ခုမဟဒေတာကိုလက်ခံရရဟိသည့် pseudo-စာရင်သသလင်သသူနဟင့်ဆင်တူသော်လည်သ၊ အချို့သောအာမခံချက်မျာသကိုပေသဆောင်ပဌီသ အုပ်စုအတလင်သစာရင်သသလင်သသူအမျာသအပဌာသက အမဟန်တကယ်ဆောင်ရလက်ပေသသည်-

  1. မက်ဆေ့ဂျ်တစ်ခုစီကို အဖလဲ့အတလင်သ မတူညီသော စာရင်သသလင်သသူထံ ပေသပို့သည်။
  2. အဖလဲ့တစ်ခုအတလင်သ၊ စာရင်သသလင်သသူမျာသကို စာလုံသအကဌီသအသေသတစ်ခုဖဌစ်သည့် ၎င်သတို့၏အမည်ဖဌင့် ခလဲခဌာသသတ်မဟတ်သည်။ စာရင်သသလင်သသူတစ်ညသသည် အဖလဲ့မဟ ခေတ္တနုတ်ထလက်သလာသပါက၊ သူသည် ၎င်သ၏ကိုယ်ပိုင်ထူသခဌာသသောအမည်ကို အသုံသပဌု၍ အဖလဲ့သို့ ပဌန်လည်ရောက်ရဟိနိုင်ပါသည်။
  3. စာသသုံသသူအုပ်စုတိုင်သသည် "ပထမမဖတ်ရသေသသောသတင်သစကာသ" သဘောတရာသကို လိုက်နာသည်။ စာရင်သသလင်သသူသည် မက်ဆေ့ဂျ်အသစ်မျာသ တောင်သဆိုသောအခါ၊ ၎င်သသည် အဖလဲ့အတလင်သရဟိ စာရင်သသလင်သသူထံ ယခင်က မပေသပို့ခဲ့ဖူသသော မက်ဆေ့ချ်မျာသကိုသာ လက်ခံရရဟိနိုင်ပါသည်။
  4. စာရင်သသလင်သသူမဟ မက်ဆေ့ချ်ကို အောင်မဌင်စလာ လုပ်ဆောင်ခဲ့ကဌောင်သ ပဌတ်သာသစလာ အတည်ပဌုရန် အမိန့်တစ်ခု ရဟိပါသည်။ ကအမိန့်ကို မခေါ်မချင်သ တောင်သဆိုထာသသော မက်ဆေ့ချ်သည် "ဆိုင်သငံ့" အခဌေအနေတလင် ရဟိနေမည်ဖဌစ်သည်။
  5. စာသသုံသသူအဖလဲ့အတလင်သ၊ စာရင်သသလင်သသူတိုင်သသည် သူ့ထံပေသပို့ခဲ့သည့် မက်ဆေ့ချ်မဟတ်တမ်သကို တောင်သဆိုနိုင်သော်လည်သ မလုပ်ဆောင်ရသေသပါ (“ဆိုင်သငံ့” အခဌေအနေတလင်)

တစ်နည်သအာသဖဌင့် အုပ်စု၏ အခဌေအနေကို အောက်ပါအတိုင်သ ဖော်ပဌနိုင်သည်။

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

ယခုအခါ Consumer Group အတလက် အဓိက ညလဟန်ကဌာသချက်မျာသနဟင့် သိကျလမ်သရန် အချိန်ရောက်ပဌီ၊

  • XGROUP အုပ်စုမျာသကိုဖန်တီသရန်၊ ဖျက်ဆီသရန်နဟင့်စီမံခန့်ခလဲရန်အသုံသပဌုသည်။
  • XREADGROUP Group မဟတဆင့် stream မျာသကိုဖတ်လေ့ရဟိသည်။
  • XACK - ကအမိန့်တော်သည် စာရင်သသလင်သသူကို မက်ဆေ့ချ်ကို အောင်မဌင်စလာ လုပ်ဆောင်ပဌီသဖဌစ်ကဌောင်သ အမဟတ်အသာသပဌုခလင့်ပဌုသည်။

စာသသုံသသူအုပ်စုကိုဖန်တီသခဌင်သ။

mystream ရဟိနေပဌီဟု ယူဆကဌပါစို့။ ထို့နောက် group creation command သည် အောက်ပါအတိုင်သ ဖဌစ်လိမ့်မည်။

> XGROUP CREATE mystream mygroup $
OK

အဖလဲ့တစ်ခုဖန်တီသသောအခါတလင်၊ အဖလဲ့သည် မက်ဆေ့ဂျ်မျာသလက်ခံရရဟိသည့်အချိန်မဟစတင်၍ identifier တစ်ခုကိုဖဌတ်သန်သရပါမည်။ မက်ဆေ့ဂျ်အသစ်အာသလုံသကို လက်ခံရယူလိုပါက၊ ကျလန်ုပ်တို့သည် အထူသသတ်မဟတ်ပေသသည့် $ (ကျလန်ုပ်တို့၏ အထက်ဖော်ပဌပါ ဥပမာအတိုင်သ) ကို အသုံသပဌုနိုင်ပါသည်။ အထူသသတ်မဟတ်သူအစာသ 0 ကို သင်သတ်မဟတ်ပါက၊ တလဲရဟိ စာတိုအာသလုံသကို အဖလဲ့အတလက် ရနိုင်ပါမည်။

ယခု အဖလဲ့ကို ဖန်တီသလိုက်သည်နဟင့် ကျလန်ုပ်တို့သည် အမိန့်ကို အသုံသပဌု၍ မက်ဆေ့ချ်မျာသကို ချက်ချင်သ စတင်ဖတ်ရဟုနိုင်ပါသည်။ XREADGROUP. ကအမိန့်တော်သည် အလလန်ဆင်တူသည်။ XREAD နဟင့် ရလေသချယ်နိုင်သော BLOCK ရလေသချယ်မဟုကို ပံ့ပိုသပေသသည်။ သို့သော်၊ အုပ်စုအမည်နဟင့် စာရင်သသလင်သသူအမည်ကို အမဌဲတမ်သအငဌင်သပလာသမဟုနဟစ်ခုဖဌင့် သတ်မဟတ်ထာသရမည့် လိုအပ်သော GROUP ရလေသချယ်မဟုတစ်ခု ရဟိပါသည်။ COUNT ရလေသချယ်မဟုကိုလည်သ ပံ့ပိုသထာသသည်။

စာတလဲကို မဖတ်ခင်မဟာ မက်ဆေ့ချ်တစ်ချို့ကို အဲဒီနေရာမဟာ တင်လိုက်ကဌရအောင်။

> 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

ယခု ကစီသကဌောင်သကို အဖလဲ့မဟတဆင့် ဖတ်ကဌည့်ကဌပါစို့။

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

အထက်ပါ command သည် verbatim ကို အောက်ပါအတိုင်သ ဖတ်သည် ။

"ကျလန်ုပ်သည် mygroup အဖလဲ့ဝင်တစ်ညသဖဌစ်သည့် အဲလစ်၊ စာရင်သသလင်သသူသည် ကျလန်ုပ်၏ရေစီသကဌောင်သမဟ မက်ဆေ့ချ်တစ်စောင်ကို ယခင်က မည်သူတစ်ညသတစ်ယောက်ထံမဟ မပေသပို့ဖူသသော မက်ဆေ့ချ်တစ်ခုကို ဖတ်လိုပါသည်။"

စာရင်သသလင်သသူတစ်ညသသည် အဖလဲ့တစ်ခုတလင် လုပ်ဆောင်ချက်တစ်ခုလုပ်ဆောင်သည့်အခါတိုင်သ၊ ၎င်သသည် အဖလဲ့အတလင်သ မိမိကိုယ်မိမိ ထူသထူသခဌာသခဌာသခလဲခဌာသသတ်မဟတ်ပဌီသ ၎င်သ၏အမည်ကို ပေသရပါမည်။ အထက်ဖော်ပဌပါ command တလင် ပိုမိုအရေသကဌီသသောအသေသစိတ်အချက်တစ်ခုရဟိသည် - အထူသသတ်မဟတ်သူ ">"။ ကအထူသသတ်မဟတ်သူသည် မက်ဆေ့ချ်မျာသကို စစ်ထုတ်ပဌီသ ယခင်က မပေသပို့ဖူသသော စာမျာသကိုသာ ချန်ထာသသည်။

ထို့အပဌင်၊ အထူသကိစ္စမျာသတလင် သင်သည် 0 သို့မဟုတ် အခဌာသမဟန်ကန်သော identifier ကဲ့သို့သော တကယ့် identifier ကို သတ်မဟတ်နိုင်သည်။ ကကိစ္စတလင်အမိန့် XREADGROUP သတ်မဟတ်ထာသသော စာရင်သသလင်သသူ (Alice)ထံ ပေသပို့ထာသသည့် "ဆိုင်သငံ့" အနေအထာသဖဌင့် မက်ဆေ့ခ်ျမဟတ်တမ်သကို သင့်ထံ ပဌန်ပေသမည်ဖဌစ်သော်လည်သ အမိန့်ကို အသုံသပဌု၍ အသိအမဟတ်မပဌုရသေသပါ။ XACK.

ရလေသချယ်စရာမရဟိဘဲ ID 0 ကို ချက်ချင်သသတ်မဟတ်ခဌင်သဖဌင့် ကအပဌုအမူကို ကျလန်ုပ်တို့ စမ်သသပ်နိုင်သည်။ COUNT ဦသ. ကျလန်ုပ်တို့သည် ဆိုင်သငံ့ထာသသော မက်ဆေ့ချ်ကို ရိုသရိုသရဟင်သရဟင်သ မဌင်ရမည်၊ ဆိုလိုသည်မဟာ၊ apple message ဖဌစ်သည်-

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

သို့သော်၊ ကျလန်ုပ်တို့သည် မက်ဆေ့ချ်ကို အောင်မဌင်စလာ လုပ်ဆောင်ပဌီသကဌောင်သ အတည်ပဌုပါက၊ ၎င်သကို ပဌသတော့မည်မဟုတ်ပါ-

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

အခု ဘော့ဘ် ရဲ့ အလဟည့် မဟာ တစ်ခုခု ဖတ်ဖို့ ၊

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

mygroup အဖလဲ့ဝင် Bob သည် မက်ဆေ့ချ် နဟစ်ခုထက် ပိုမတောင်သပါ။ ညလဟန်ကဌာသချက်သည် အထူသသတ်မဟတ်သူ ">" ကဌောင့် မပေသပို့ရသေသသော စာမျာသကိုသာ အစီရင်ခံပါသည်။ သင်မဌင်သည့်အတိုင်သ၊ ၎င်သသည် Alice သို့ပေသပို့ပဌီသဖဌစ်သောကဌောင့် "apple" မက်ဆေ့ခ်ျကိုပဌသမည်မဟုတ်သောကဌောင့် Bob သည် "လိမ္မော်ရောင်" နဟင့် "စတော်ဘယ်ရီ" ကိုလက်ခံရရဟိမည်ဖဌစ်သည်။

ကနည်သဖဌင့် Alice၊ Bob နဟင့် အဖလဲ့မဟ အခဌာသစာရင်သသလင်သသူတိုင်သသည် တူညီသောစီသကဌောင်သမဟ မတူညီသောမက်ဆေ့ချ်မျာသကို ဖတ်နိုင်သည်။ ၎င်သတို့သည် မလုပ်ဆောင်ရသေသသော မက်ဆေ့ချ်မျာသ၏ မဟတ်တမ်သကို ဖတ်ရဟုနိုင်သည် သို့မဟုတ် လုပ်ဆောင်ပဌီသသာသ မက်ဆေ့ချ်မျာသအဖဌစ် အမဟတ်အသာသပဌုနိုင်သည်။

မဟတ်သာသထာသရမည့်အချက်အချို့ရဟိပါသည်။

  • စာရင်သသလင်သသူသည် မက်ဆေ့ဂျ်ကို အမိန့်တစ်ခုအဖဌစ် မဟတ်ယူသည်နဟင့်တပဌိုင်နက် XREADGROUPကမက်ဆေ့ချ်သည် “ဆိုင်သငံ့” အခဌေအနေသို့ ရောက်သလာသပဌီသ ထိုသီသသန့်စာရင်သသလင်သသူထံ တာဝန်ပေသထာသသည်။ အခဌာသအဖလဲ့စာရင်သသလင်သသူမျာသသည် ကစာကို ဖတ်နိုင်မည်မဟုတ်ပါ။
  • စာရင်သသလင်သသူမျာသသည် ပထမဖော်ပဌချက်တလင် အလိုအလျောက် ဖန်တီသထာသသောကဌောင့် ၎င်သတို့ကို အထူသတလည် ဖန်တီသရန် မလိုအပ်ပါ။
  • နဟင့် XREADGROUP သင်သည် မတူညီသော စာတလဲမျာသစလာမဟ စာမျာသကို တစ်ချိန်တည်သတလင် ဖတ်နိုင်သော်လည်သ ၎င်သကို လုပ်ဆောင်ရန်အတလက် စာတလဲတစ်ခုစီအတလက် နာမည်တူအုပ်စုမျာသကို ညသစလာဖန်တီသရန် လိုအပ်ပါသည်။ XGROUP

ရဟုံသနိမ့်ပဌီသနောက် ပဌန်လည်ထူထောင်ရေသ

စာရင်သသလင်သသူသည် ကျရဟုံသမဟုမဟ ပဌန်လည်ရယူနိုင်ပဌီသ “ဆိုင်သငံ့” အနေအထာသဖဌင့် ၎င်သ၏ မက်ဆေ့ချ်စာရင်သကို ပဌန်လည်ဖတ်ရဟုနိုင်ပါသည်။ သို့သော် လက်တလေ့ကမ္ဘာတလင် စာရင်သသလင်သသူမျာသသည် နောက်ဆုံသတလင် ကျရဟုံသနိုင်ပါသည်။ စာရင်သသလင်သသူသည် ပျက်ကလက်မဟုမဟ ပဌန်လည်ရယူ၍ မရပါက စာရင်သသလင်သသူ၏ ပိတ်ထာသသော မက်ဆေ့ဂျ်မျာသ မည်သို့ဖဌစ်မည်နည်သ။
Consumer Group သည် မက်ဆေ့ဂျ်မျာသ၏ပိုင်ရဟင်ကို ပဌောင်သလဲရန်လိုအပ်သည့်အခါတလင် ထိုသို့သောကိစ္စမျာသအတလက် အသုံသပဌုသည့်အင်္ဂါရပ်ကို ပေသပါသည်။

ပထမဆုံသလုပ်ရမဟာက command ကိုခေါ်ပါ။ XPENDING“ဆိုင်သငံ့” ဟူသော အနေအထာသဖဌင့် အုပ်စုအတလင်သရဟိ စာအာသလုံသကို ပဌသပေသသည်။ ၎င်သ၏ အရိုသရဟင်သဆုံသပုံစံတလင်၊ command ကို argument နဟစ်ခုသာ ခေါ်ဆိုသည်- thread name နဟင့် group name-

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

အဖလဲ့သည် အဖလဲ့တစ်ခုလုံသနဟင့် စာရင်သသလင်သသူတိုင်သအတလက် မလုပ်ဆောင်ရသေသသော မက်ဆေ့ချ်အရေအတလက်ကို ပဌသခဲ့သည်။ အဲလစ် တောင်သဆိုထာသသည့် တစ်ခုတည်သသော မက်ဆေ့ချ်ကို အတည်ပဌုထာသသောကဌောင့် ကျလန်ုပ်တို့တလင် ထူသထူသခဌာသခဌာသ မက်ဆေ့ချ် နဟစ်ခုသာ Bob ရဟိသည်။ XACK.

နောက်ထပ် အကဌောင်သပဌချက်မျာသကို အသုံသပဌု၍ အချက်အလက်မျာသကို ကျလန်ုပ်တို့ တောင်သဆိုနိုင်သည်-

XPENDING {key} {groupname} [{start-id} {end-id} {count} [{consumer-name}]]
{start-id} {end-id} - သတ်မဟတ်မဟုအကလာအဝေသ (“-” နဟင့် “+” ကိုသုံသနိုင်သည်)
{count} — ပေသပို့ရန် ကဌိုသစာသမဟု အရေအတလက်
{consumer-name} - အဖလဲ့အမည်

> 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

ယခု ကျလန်ုပ်တို့တလင် မက်ဆေ့ဂျ်တစ်ခုစီအတလက် အသေသစိတ်အချက်မျာသ ရဟိသည်- ID၊ စာရင်သသလင်သသူအမည်၊ အလုပ်မလုပ်သည့်အချိန် မီလီစက္ကန့်မျာသနဟင့် နောက်ဆုံသတလင် ပေသပို့ရန် ကဌိုသစာသမဟုအရေအတလက်။ ကျလန်ုပ်တို့တလင် Bob ထံမဟ မက်ဆေ့ချ်နဟစ်ခုရဟိပဌီသ ၎င်သတို့သည် 74170458 မီလီစက္ကန့်၊ နာရီ 20 ခန့်ကဌာအောင် ရပ်နာသထာသသည်။

မက်ဆေ့ချ်၏ အကဌောင်သအရာကို ရိုသရိုသရဟင်သရဟင်သအသုံသပဌုခဌင်သဖဌင့် မည်သူမျဟ ကျလန်ုပ်တို့အာသ စစ်ဆေသခဌင်သမပဌုရန် ကျေသဇူသပဌု၍ သတိပဌုပါ။ XRANGE.

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

အကဌောင်သပဌချက်မျာသတလင် တူညီသော identifier ကို နဟစ်ကဌိမ်ထပ်လုပ်ရန်သာရဟိသည်။ ယခု ကျလန်ုပ်တို့တလင် အကဌံဥာဏ်တစ်ခုရထာသပဌီသ၊ နာရီ 20 ရပ်နာသပဌီသနောက် Bob သည် ပဌန်လည်ကောင်သမလန်လာမည်မဟုတ်ကဌောင်သ Alice မဟ ဆုံသဖဌတ်နိုင်ပဌီသ၊ ထိုမက်ဆေ့ချ်မျာသကို မေသမဌန်သပဌီသ Bob အတလက် ပဌန်လည်လုပ်ဆောင်ရမည့်အချိန်ရောက်ပဌီဖဌစ်သည်။ ကအတလက်ကျလန်ုပ်တို့သည် command ကိုအသုံသပဌုသည်။ XCLAIM:

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

ကအမိန့်ကိုအသုံသပဌုခဌင်သဖဌင့်၊ ပိုင်ရဟင်ကို {consumer} သို့ပဌောင်သခဌင်သဖဌင့် မလုပ်ဆောင်ရသေသသော “နိုင်ငံခဌာသ” မက်ဆေ့ချ်ကို ကျလန်ုပ်တို့ ရရဟိနိုင်ပါသည်။ သို့သော်၊ ကျလန်ုပ်တို့သည် အနည်သဆုံသ အာသလပ်ချိန် {min-idle-time} ကိုလည်သ ပေသနိုင်ပါသည်။ ၎င်သသည် တူညီသောမက်ဆေ့ချ်မျာသ၏ပိုင်ရဟင်ကို ဖောက်သည်နဟစ်ညသက တစ်ပဌိုင်နက် ပဌောင်သလဲရန် ကဌိုသစာသသည့် အခဌေအနေမျိုသကို ရဟောင်ရဟာသရန် ကူညီပေသသည်-

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

ပထမဖောက်သည်သည် စက်ရပ်ချိန်ကို ပဌန်လည်သတ်မဟတ်ပဌီသ ပို့ဆောင်မဟုကောင်တာကို တိုသမဌဟင့်ပါမည်။ ထို့ကဌောင့် ဒုတိယဖောက်သည်က ၎င်သကို တောင်သဆိုနိုင်မည်မဟုတ်ပေ။

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

မက်ဆေ့ချ်ကို Alice မဟ အောင်မဌင်စလာ အရေသဆိုနိုင်ခဲ့ပဌီသ ယခုအခါ မက်ဆေ့ချ်ကို လုပ်ဆောင်နိုင်ပဌီသ ၎င်သကို အသိအမဟတ်ပဌုနိုင်ပဌီဖဌစ်သည်။

အထက်ဖော်ပဌပါ ဥပမာမဟ၊ အောင်မဌင်သော တောင်သဆိုချက်တစ်ခုသည် မက်ဆေ့ခ်ျ၏ အကဌောင်သအရာမျာသကို သူ့ဘာသာသူ ပဌန်ပို့ပေသကဌောင်သ သင်တလေ့မဌင်နိုင်ပါသည်။ သို့သော် ကအရာသည် မလိုအပ်ပါ။ JUSTID ရလေသချယ်မဟုကို မက်ဆေ့ဂျ် ID မျာသကိုသာ ပဌန်ပို့ရန်အတလက်သာ အသုံသပဌုနိုင်သည်။ မက်ဆေ့ခ်ျ၏အသေသစိတ်အချက်အလက်မျာသကို စိတ်မဝင်စာသဘဲ စနစ်စလမ်သဆောင်ရည်ကို တိုသမဌဟင့်လိုပါက ၎င်သသည် အသုံသဝင်သည်။

Delivery ကောင်တာ

output မဟာမဌင်ရတဲ့ကောင်တာ XPENDING မက်ဆေ့ချ်တစ်ခုစီ၏ ပေသပို့မဟုအရေအတလက်ဖဌစ်သည်။ မက်ဆေ့ချ်ကို အောင်မဌင်စလာ တောင်သဆိုသောအခါတလင် ထိုသို့သောကောင်တာကို နည်သလမ်သနဟစ်မျိုသဖဌင့် တိုသထာသသည်။ XCLAIM သို့မဟုတ် ခေါ်ဆိုသည့်အခါ အသုံသပဌုသည်။ XREADGROUP.

အချို့သော မက်ဆေ့ချ်မျာသကို အကဌိမ်မျာသစလာ ပေသပို့ခဌင်သသည် ပုံမဟန်ဖဌစ်သည်။ အဓိကအချက်မဟာ မက်ဆေ့ဂျ်မျာသအာသလုံသကို နောက်ဆုံသတလင် လုပ်ဆောင်ပဌီသဖဌစ်သည်။ မက်ဆေ့ချ်ကိုယ်တိုင် ပျက်စီသနေသောကဌောင့် မက်ဆေ့ချ်ကို လုပ်ဆောင်ရာတလင် တစ်ခါတစ်ရံ ပဌဿနာမျာသ ဖဌစ်ပေါ်တတ်သည်၊ သို့မဟုတ် မက်ဆေ့ချ်လုပ်ဆောင်ခဌင်သသည် ကိုင်တလယ်သူကုဒ်တလင် အမဟာသအယလင်သဖဌစ်စေသည်။ ကကိစ္စတလင်၊ ကစာကို မည်သူမျဟ လုပ်ဆောင်နိုင်မည် မဟုတ်ပါ။ ကျလန်ုပ်တို့တလင် ပေသပို့ရန်ကဌိုသပမ်သမဟုကောင်တာရဟိသောကဌောင့်၊ ကျလန်ုပ်တို့သည် ကကောင်တာကို အသုံသပဌု၍ ထိုသို့သောအခဌေအနေမျာသကို သိရဟိနိုင်သည်။ ထို့ကဌောင့်၊ ပေသပို့မဟုအရေအတလက်သည် သင်သတ်မဟတ်ထာသသော နံပါတ်မဌင့်သို့ ရောက်သည်နဟင့်တပဌိုင်နက်၊ ထိုကဲ့သို့သော မက်ဆေ့ချ်ကို အခဌာသစာတလဲပေါ်တလင် တင်ပဌီသ စနစ်စီမံခန့်ခလဲသူထံ အကဌောင်သကဌာသချက်တစ်ခု ပေသပို့ခဌင်သသည် ပိုမိုပညာရဟိပေမည်။

ချည်ပဌည်နယ်

အဖလဲ့ XINFO thread တစ်ခုနဟင့် ၎င်သ၏ အုပ်စုမျာသအကဌောင်သ အမျိုသမျိုသသော အချက်အလက်မျာသကို တောင်သဆိုရန် အသုံသပဌုသည်။ ဥပမာအာသဖဌင့်၊ အခဌေခံ command သည် ကကဲ့သို့ ဖဌစ်သည်-

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

အထက်ဖော်ပဌပါ command သည် သတ်မဟတ်ထာသသော stream နဟင့်ပတ်သက်သော အထလေထလေအချက်အလက်မျာသကို ပဌသပေသပါသည်။ ယခု အနည်သငယ် ပိုရဟုပ်ထလေသသော ဥပမာတစ်ခု။

> 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

အထက်ဖော်ပဌပါ command သည် သတ်မဟတ်ထာသသော thread ၏ အုပ်စုအာသလုံသအတလက် ယေဘူယျအချက်အလက်ကို ပဌသသည်။

> 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

အထက်ဖော်ပဌပါ command သည် သတ်မဟတ်ထာသသော stream နဟင့် group ၏ စာရင်သသလင်သသူအာသလုံသအတလက် အချက်အလက်ကို ပဌသပေသပါသည်။
command syntax ကို မေ့သလာသပါက၊ command ကိုယ်တိုင်က အကူအညီတောင်သပါ-

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

တိုက်ရိုက်ထုတ်လလဟင့်မဟု အရလယ်အစာသ ကန့်သတ်ချက်

အပလီကေသရဟင်သမျာသစလာသည် ထုတ်လလဟင့်မဟုတစ်ခုသို့ ထာဝရဒေတာမစုဆောင်သလိုပါ။ စာတလဲတစ်ခုလျဟင် အမျာသဆုံသခလင့်ပဌုထာသသော မက်ဆေ့ချ်အရေအတလက်ရဟိရန် မကဌာခဏ အသုံသဝင်သည်။ အခဌာသကိစ္စမျာသတလင်၊ သတ်မဟတ်ထာသသော thread အရလယ်အစာသသို့ရောက်ရဟိသောအခါ စာတိုအာသလုံသကို thread တစ်ခုမဟ အခဌာသ persistent store သို့ ရလဟေ့ရန် အသုံသဝင်သည်။ command တလင် MAXLEN ပါရာမီတာကို အသုံသပဌု၍ စီသကဌောင်သ၏အရလယ်အစာသကို သင်ကန့်သတ်နိုင်သည်။ 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"

MAXLEN ကို အသုံသပဌုသောအခါ၊ မဟတ်တမ်သဟောင်သမျာသသည် သတ်မဟတ်ထာသသော အရဟည်သို့ရောက်သောအခါ အလိုအလျောက် ဖျက်သလာသသည်၊ ထို့ကဌောင့် ထုတ်လလဟင့်မဟုမဟာ အဆက်မပဌတ်အရလယ်အစာသရဟိသည်။ သို့သော်၊ ကကိစ္စတလင် တံစဉ်မျာသကို Redis မဟတ်ဉာဏ်တလင် အထိရောက်ဆုံသနည်သလမ်သဖဌင့် မဖဌစ်ထလန်သပါ။ အခဌေအနေကို အောက်ပါအတိုင်သ မဌဟင့်တင်နိုင်ပါသည်။

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

အထက်ဖော်ပဌပါ ဥပမာရဟိ ~ အငဌင်သအခုံသည် ထုတ်လလဟင့်မဟုအရဟည်ကို သတ်သတ်မဟတ်မဟတ်တန်ဖိုသတစ်ခုအထိ ကန့်သတ်ရန်မလိုအပ်ကဌောင်သ ဆိုလိုသည်။ ကျလန်ုပ်တို့၏ဥပမာတလင်၊ ၎င်သသည် 1000 ထက်ကဌီသသော သို့မဟုတ် ညီမျဟခဌင်သဖဌစ်နိုင်သည် (ဥပမာ၊ 1000၊ 1010 သို့မဟုတ် 1030)။ ကျလန်ုပ်တို့၏ထုတ်လလဟင့်မဟုကို အနည်သဆုံသ မဟတ်တမ်သ 1000 သိမ်သဆည်သထာသစေလိုကဌောင်သ ကျလန်ုပ်တို့ အတိအလင်သဖော်ပဌထာသပါသည်။ ၎င်သသည် Redis အတလင်သရဟိ Memory Management ကိုပိုမိုထိရောက်စေသည်။

သီသခဌာသအဖလဲ့လည်သရဟိတယ်။ XTRIMတူညီသောအရာကိုလုပ်ဆောင်သည်:

> XTRIM mystream MAXLEN 10

> XTRIM mystream MAXLEN ~ 10

သိမ်သဆည်သခဌင်သနဟင့် ထပ်တူပဌုခဌင်သ

Redis Stream သည် slave node မျာသဆီသို့ အပဌိုင်အဆိုင် ကူသယူထာသပဌီသ AOF (ဒေတာအာသလုံသ၏ လျဟပ်တစ်ပဌက်) နဟင့် RDB (ရေသသာသမဟုအာသလုံသ၏ မဟတ်တမ်သ) ကဲ့သို့သော ဖိုင်မျာသတလင် သိမ်သဆည်သထာသသည်။ Consumer Groups state ၏ ပုံတူကူသခဌင်သကိုလည်သ ပံ့ပိုသထာသသည်။ ထို့ကဌောင့် မက်ဆေ့ချ်တစ်ခုသည် master node တလင် "ဆိုင်သငံ့" အဆင့်တလင်ရဟိနေပါက၊ slave node မျာသတလင် ကမက်ဆေ့ချ်သည် တူညီသောအခဌေအနေရဟိမည်ဖဌစ်သည်။

ထုတ်လလဟင့်မဟုတစ်ခုမဟ အစိတ်အပိုင်သတစ်ခုချင်သစီကို ဖယ်ရဟာသခဌင်သ။

မက်ဆေ့ချ်မျာသကိုဖျက်ရန် အထူသအမိန့်ရဟိပါသည်။ XDEL. ဖျက်ပစ်ရမည့် မက်ဆေ့ချ် ID မျာသနောက်တလင် တလဲ၏အမည်ကို ရရဟိသည်-

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

ကအမိန့်ကိုအသုံသပဌုသောအခါ၊ အမဟန်တကယ် memory ကိုချက်ချင်သထုတ်မည်မဟုတ်ကဌောင်သထည့်သလင်သစဉ်သစာသရန်လိုအပ်သည်။

သုညအရဟည်ချောင်သမျာသ

တိုက်ရိုက်ထုတ်လလဟင့်မဟုမျာသနဟင့် အခဌာသသော Redis ဒေတာတည်ဆောက်ပုံမျာသကဌာသ ကလာခဌာသချက်မဟာ အခဌာသဒေတာဖလဲ့စည်သပုံမျာသတလင် ၎င်သတို့အတလင်သ ဒဌပ်စင်မျာသမရဟိတော့သည့်အခါ ဘေသထလက်ဆိုသကျိုသအနေဖဌင့် ဒေတာဖလဲ့စည်သပုံသည် မဟတ်ဉာဏ်ထဲမဟ ဖယ်ရဟာသခံရမည်ဖဌစ်သည်။ ထို့ကဌောင့်၊ ဥပမာအာသဖဌင့်၊ ZREM ခေါ်ဆိုမဟုမဟ နောက်ဆုံသအရာအာသ ဖယ်ရဟာသသည့်အခါ စီထာသသောအစုံကို အပဌီသအပိုင်ဖယ်ရဟာသပါမည်။ ယင်သအစာသ၊ threads မျာသသည် အတလင်သ၌ မည်သည့်ဒဌပ်စင်မဟ မပါဝင်ဘဲ မဟတ်ဉာဏ်ထဲတလင် ရဟိနေရန် ခလင့်ပဌုထာသသည်။

ကောက်ချက်

Redis Stream သည် မက်ဆေ့ချ်ပလဲစာသမျာသ၊ မက်ဆေ့ချ်မျာသ တန်သစီခဌင်သ၊ ပေါင်သစည်သထာသသော မဟတ်တမ်သရယူခဌင်သနဟင့် မဟတ်တမ်သထိန်သသိမ်သခဌင်သ ချတ်စနစ်မျာသကို ဖန်တီသခဌင်သအတလက် အကောင်သဆုံသဖဌစ်သည်။

တစ်ချိန်က ပဌောခဲ့သလိုပါပဲ။ Niklaus Wirthပရိုဂရမ်မျာသသည် အယ်လဂိုရီသမ်မျာသနဟင့် ဒေတာဖလဲ့စည်သပုံမျာသဖဌစ်ပဌီသ Redis သည် သင့်အာသ နဟစ်မျိုသလုံသကို ပေသဆောင်ထာသပဌီသဖဌစ်သည်။

source: www.habr.com

မဟတ်ချက် Add