Lapho abasebenzi abaningi babelana nge-pool nge-Redis, i-sorted set ingasebenzisa inqubomgomo elula: khetha i-proxy efanelekile enenani elincane kakhulu lokwabiwa okubhaliwe. Gcina isihlonzi se-proxy njenge-member kanye nenani layo lokwabiwa njenge-score.

Kwi-pool ekhonza izicelo zomphakathi ezivunyelwe, uhlu lwama-proxy amahhala lungahlinzeka ngabazongenela i-endpoint okufanele bahlolwe ngemithetho yokufaneleka yaleyo pool. Qala amalungu afanelekile ngenani lokuqala okuvunyelwene ngalo. Bese wenza ukukhetha nokwengeza kube umsebenzi owodwa ohlangothini lweseva:

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

Dlulisela ukhiye we-sorted set njengengxabano yokhiye eyodwa ye-script ngesixhumanisi se-EVAL sekhayenti lakho le-Redis. I-pool engenalutho ikhiqiza umphumela we-null okufanele uhlelo lusebenzise ngaphandle kokwenza isicelo.

Kungani kuhlanganiswa imiyalo emibili?

Ukufunda nokwengeza okuhlukene kwenza abasebenzi ababili babone ubuncane obufanayo ngaphambi kokuba noma ubani abuyekeze. I-Redis yenza i-Lua script ngendlela ye-athomu, ngakho omunye umsebenzi akakwazi ukufaka ukukhetha phakathi kokufunda nokwengeza kwale script. Gcina i-script imfushane ngoba ukusebenza kwayo kuvimbela omunye umsebenzi we-Redis.

I-ZRANGE ibuyisela i-score ephansi kuqala; ama-score alinganayo axazululwa ngezinga lamalungu, hhayi ngokungahleliwe. I-ZINCRBY yenyusa i-score yelungu elikhethiwe ngeyodwa ukwenzela ukwabiwa okulandelayo.

Chaza ukuthi i-score isho ukuthini

Lokhu kubala ukwabiwa, kufaka phakathi ukwabiwa okwesicelo sakho senethiwekhi esihluleka kamuva. Akukali ukubambezeleka, izicelo eziphumelelayo noma umsebenzi oqhubekayo. Kusenzeka ukukhetha ngokuphindaphindiwe ilungu elilodwa elifanelekile; i-script ayigcini ngokukhethekile.

Gcina ukufaneleka ngemithetho yezempilo nenqubomgomo ye-pool. Uma ususa ilungu bese ulibuyisela kamuva, thatha isinqumo sokuthi ingabe inani lalo lomlando kufanele ligcinwe. Ukuqala i-proxy ebuyisiwe kusukela ku-zero kungagxilisa ukwabiwa kuyo ngesikhathi ithuthuka.

Inqubomgomo yokuhlanganyela okuphansi kakhulu idinga umjikelezo wempilo ohlukile, kufaka phakathi ukuqedwa nokuphathwa kwemisebenzi elahliwe. Ungayichazi le khawunta eqoqiwe njengalowo mjikelezo wempilo.

Izihloko ezihlobene