Redis တွင် အသုံးနည်းဆုံး ပရောက်စီကို အက်တမ်အလိုက် ခွဲဝေခြင်း
စီစဉ်ထားသော အစုနှင့် တိုတောင်းသော Lua စကရစ်ဖ်ကို အသုံးပြု၍ အလုပ်သမားများအကြား ပရောက်စီ၏ ခွဲဝေမှု အရေအတွက်ကို ရွေးချယ်ပြီး တိုးမြှင့်ပါ။
အလုပ်သမား အများအပြားသည် Redis မှတစ်ဆင့် ပေါင်းကန်တစ်ခုကို မျှဝေသောအခါ စီစဉ်ထားသော အစုသည် ရိုးရှင်းသော မူဝါဒကို အကောင်အထည်ဖော်နိုင်သည်။ မှတ်တမ်းတင်ထားသော ခွဲဝေမှု အနည်းဆုံးရှိသော အရည်အချင်းပြည့်မီ ပရောက်စီကို ရွေးချယ်ခြင်းဖြစ်သည်။ ပရောက်စီ သတ်မှတ်ချက်ကို အဖွဲ့ဝင်အဖြစ်၊ ၎င်း၏ ခွဲဝေမှု အရေအတွက်ကို ရမှတ်အဖြစ် သိမ်းဆည်းပါ။
ခွင့်ပြုထားသော အများသူငှာ တောင်းဆိုချက်များကို ဝန်ဆောင်သော ပေါင်းကန်အတွက် အခမဲ့ ပရောက်စီ စာရင်း သည် ထိုပေါင်းကန်၏ အရည်အချင်း စည်းမျဉ်းများဖြင့် အကဲဖြတ်ရန် အဆုံးမှတ် ကိုယ်စားလှယ်လောင်းများကို ပေးနိုင်သည်။ အရည်အချင်းပြည့်မီသော အဖွဲ့ဝင်များကို သဘောတူထားသော စတင်အရေအတွက်ဖြင့် စတင်ပါ။ ထို့နောက် ရွေးချယ်မှုနှင့် တိုးမြှင့်မှုကို တစ်ခုတည်းသော ဆာဗာဘက်ခြမ်း လုပ်ဆောင်ချက်အဖြစ် ပြုလုပ်ပါ။
local chosen = redis.call('ZRANGE', KEYS[1], 0, 0)[1]
if not chosen then
return nil
end
redis.call('ZINCRBY', KEYS[1], 1, chosen)
return chosenစီစဉ်ထားသော အစု၏ သော့ကို စကရစ်ဖ်၏ တစ်ခုတည်းသော သော့ အငြင်းအခုံအဖြစ် သင့် Redis client ၏ EVAL မျက်နှာပြင်မှတစ်ဆင့် ပေးပို့ပါ။ ဗလာ ပေါင်းကန်သည် null ရလဒ် ထုတ်ပေးပြီး အက်ပ်သည် တောင်းဆိုချက် မပြုလုပ်ဘဲ ကိုင်တွယ်ရမည်။
အမိန့်နှစ်ခုကို အဘယ်ကြောင့် ပေါင်းစပ်သနည်း
သီးခြား ဖတ်ခြင်းနှင့် တိုးမြှင့်ခြင်းသည် အလုပ်သမား နှစ်ဦးအား မည်သူမျှ မွမ်းမံမီ အနည်းဆုံးတန်ဖိုး တူညီစွာ မြင်ခွင့်ပေးသည်။ Redis သည် Lua စကရစ်ဖ်ကို အက်တမ်အလိုက် လုပ်ဆောင်သောကြောင့် အခြား အလုပ်သမားသည် ဤစကရစ်ဖ်၏ ဖတ်ခြင်းနှင့် တိုးမြှင့်ခြင်း အကြား ရွေးချယ်မှုကို မထည့်နိုင်ပါ။ စကရစ်ဖ်ကို တိုတောင်းအောင် ထားပါ၊ အဘယ်ကြောင့်ဆိုသော် ၎င်း၏ လုပ်ဆောင်မှုသည် အခြား Redis အလုပ်ကို ပိတ်ဆို့သည်။
ZRANGE သည် အနိမ့်ဆုံး ရမှတ်ကို ပထမ ပြန်ပေးသည်။ တူညီသော ရမှတ်များကို အဖွဲ့ဝင် အစီအစဉ်ဖြင့် ဖြေရှင်းသည်၊ ကျပန်း မဟုတ်ပါ။ ZINCRBY သည် ရွေးချယ်ထားသော အဖွဲ့ဝင်၏ ရမှတ်ကို နောက်ခွဲဝေမှုအတွက် တစ်ခု တိုးပေးသည်။
ရမှတ်၏ အဓိပ္ပာယ်ကို သတ်မှတ်ပါ
ဤသည် ခွဲဝေမှုများကို ရေတွက်ပြီး နောက်ပိုင်း ၎င်း၏ ကွန်ရက် တောင်းဆိုချက် မအောင်မြင်သော ခွဲဝေမှုလည်း ပါဝင်သည်။ ၎င်းသည် ကြန့်ကြာမှု၊ အောင်မြင်သော တောင်းဆိုချက်များ သို့မဟုတ် လက်ရှိ လုပ်ဆောင်နေသော အလုပ်ကို တိုင်းတာခြင်း မရှိပါ။ တစ်ခုတည်းသော အရည်အချင်းပြည့်မီ အဖွဲ့ဝင်ကို ထပ်ခါတလဲလဲ ရွေးချယ်နိုင်ဆဲ ဖြစ်သည်။ စကရစ်ဖ်သည် ၎င်းကို သီးသန့် မသိမ်းဆည်းပါ။
ပေါင်းကန်၏ ကျန်းမာရေးနှင့် မူဝါဒ စည်းမျဉ်းများဖြင့် အရည်အချင်းကို ထိန်းသိမ်းပါ။ အဖွဲ့ဝင်တစ်ခုကို ဖယ်ရှားပြီး နောက်ပိုင်း ပြန်လည် ထည့်သွင်းပါက ၎င်း၏ သမိုင်းဝင် အရေအတွက်ကို ထိန်းထားသင့်မသင့် ဆုံးဖြတ်ပါ။ ပြန်လည် ထည့်သွင်းထားသော ပရောက်စီကို သုညမှ စတင်ခြင်းသည် ၎င်း လိုက်မီနေစဉ် ခွဲဝေမှုများကို ၎င်းအပေါ် စုစည်းစေနိုင်သည်။
အနည်းဆုံး တစ်ပြိုင်နက်တည်း မူဝါဒအတွက် ပြီးစီးမှုနှင့် စွန့်ပစ်ထားသော အလုပ်များကို ကိုင်တွယ်ခြင်း အပါအဝင် မတူညီသော ဘဝစက်ဝန်း လိုအပ်သည်။ ဤစုစုပေါင်း ကောင်တာကို ထို ဘဝစက်ဝန်းအဖြစ် မအနက်ဖွင့်ပါနှင့်။