کله چې ډېر کارګران د 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 کړکۍ EVAL مخې ته ولېږه. تشه حوضه null پایله ورکوي چې اپلیکیشن باید پرته له غوښتنې يې سمبالړه وکړي.

ولې دواړه حکمونه یوځای کړو؟

جلا لوستل او زیاتوالی دوه کارګرو ته اجازه ورکوي چې د یو بل له تازه کولو مخکې ورته لږ تر لږه وویني. Redis د Lua سکریپټ په اتومي ډول پرمخ وړي، نو بل کارګر نشي کولای د دې سکریپټ د لوستلو او زیاتولو ترمنځ انتخاب دننه کړي. سکریپټ لنډ وساته ځکه چې پرمخ وړل یې نور Redis کار بندوي.

ZRANGE تر ټولو ټیټه نمره لومړی ورکوي؛ برابرې نمرې د غړو په ترتیب حل کېږي، نه په ناڅاپي ډول. ZINCRBY د راتلونکي تخصیص لپاره د ټاکل شوي غړي نمره یوه زیاتوي.

د نمرې معنا وټاکه

دا تخصیصونه شمېري، په شمول هغه تخصیص چې د شبکې غوښتنه یې وروسته ناکامېږي. دا د ځنډ، بریالیو غوښتنو یا روان کار اندازه نه کوي. لا هم ممکنه ده چې یوازینی وړ غړی بیا بیا وټاکل شي؛ سکریپټ هغه په ځانګړي ډول نه ساتي.

د حوضې د روغتیا او تګلارې مقرراتو سره وړتیا وساته. که یو غړی لیرې کړې او وروسته یې بیرته راوړې، پریکړه وکړه چې ایا تاریخي شمېره یې وساتل شي. د بیا راوړل شوي پروکسي له صفر څخه پیل کول کولای شي تخصیصونه پر هغې متمرکز کړي ترڅو پوره شي.

د لږ تر لږه هممهالنۍ تګلاره بېل ژوندلیک ته اړتیا لري، په شمول بشپړونې او د پرېښودل شوو دندو سمبالښت. دا جمعه شمېرونکی د هغه ژوندلیک په توګه مه تفسیره.

اړوندې مقالې