Kur disa punëtorë ndajnë një pishinë përmes Redis, një grup i renditur mund të zbatojë një politikë të thjeshtë: zgjidh përfaqësuesin e pranueshëm me më pak caktime të regjistruara. Ruani identifikuesin e përfaqësuesit si anëtar dhe numrin e caktimeve të tij si pikë.

Për një pishinë që shërben kërkesa publike të lejuara, lista e përfaqësuesve falas mund të ofrojë kandidatë për pika fundore për t'u vlerësuar sipas rregullave të pranueshmërisë së asaj pishine. Inicializoni anëtarët e pranueshëm me një numër fillestar të rënë dakord. Më pas bëni zgjedhjen dhe rritjen një operacion të vetëm në anën e serverit:

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

Kaloni çelësin e grupit të renditur si argumentin e vetëm të çelësit të skriptit përmes ndërfaqes EVAL të klientit tuaj Redis. Një pishinë bosh prodhon një rezultat null që aplikacioni duhet ta trajtojë pa bërë një kërkesë.

Pse të kombinohen dy komandat?

Leximet dhe rritjet e ndara lejojnë dy punëtorë të shohin të njëjtin minimum përpara se ndonjëri ta përditësojë. Redis ekzekuton një skript Lua në mënyrë atomike, kështu që një punëtor tjetër nuk mund të fusë një zgjedhje midis leximit dhe rritjes së këtij skripti. Mbajeni skriptin të shkurtër sepse ekzekutimi i tij bllokon punën tjetër të Redis.

ZRANGE kthen pikën më të ulët fillimisht; pikët e barabarta zgjidhen nga rendi i anëtarëve, jo rastësisht. ZINCRBY rrit pikën e anëtarit të zgjedhur me një për caktimin tjetër.

Përcaktoni çfarë do të thotë pika

Kjo numëron caktime, përfshirë një caktim, kërkesa e rrjetit të të cilit dështon më vonë. Nuk mat vonesën, kërkesat e suksesshme ose punën që po kryhet. Zgjedhja e përsëritur e anëtarit të vetëm të pranueshëm mbetet e mundur; skripti nuk e rezervon atë në mënyrë ekskluzive.

Ruani pranueshmërinë me rregullat e shëndetit dhe politikës së pishinës. Nëse hiqni një anëtar dhe më vonë e riktheni, vendosni nëse duhet të ruhet numri i tij historik. Fillimi i një përfaqësuesi të rikthyer nga zero mund t'i përqendrojë caktimet tek ai ndërsa arrin.

Një politikë e konkurrencës minimale kërkon një cikël tjetër jetësor, duke përfshirë përfundimin dhe trajtimin e punëve të braktisura. Mos e interpretoni këtë numërues kumulativ si atë cikël jetësor.

Artikuj të ngjashëm