Nígbà tí ọ̀pọ̀lọpọ̀ òṣìṣẹ́ bá pín adágún kan nípasẹ̀ Redis, àkójọ tí a tò lẹ́sẹẹsẹ le ṣe ìlànà rọrùn: yan aṣojú tó yẹ tí ó ní ìpín tí a kọ sílẹ̀ tó kéré jù. Tọ́jú ìdánimọ̀ aṣojú gẹ́gẹ́ bí ọmọ ẹgbẹ́ àti iye ìpín rẹ̀ gẹ́gẹ́ bí àmì.

Fún adágún tí ń sin àwọn ìbéèrè gbogbogbò tí a gbà láàyè, àkójọ aṣojú ọ̀fẹ́ le pèsè àwọn olùdíje ipò ìparí láti ṣe àyẹ̀wò nípasẹ̀ àwọn ìlànà yíyẹ adágún yẹn. Bẹ̀rẹ̀ àwọn ọmọ ẹgbẹ́ tó yẹ pẹ̀lú iye ìbẹ̀rẹ̀ tí a gbà. Lẹ́yìn náà sọ yíyan àti ìpọ̀sí di ìṣe ẹ̀yà kan ní ẹ̀gbẹ́ olùpèsè:

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

Fi kọ́kọ́rọ́ àkójọ tí a tò lẹ́sẹẹsẹ ránṣẹ́ gẹ́gẹ́ bí àríyànjiyàn kọ́kọ́rọ́ kan ṣoṣo ti script nípasẹ̀ ojú-ìwé EVAL ti ẹ̀rọ Redis rẹ. Adágún òfo ń mú àbájáde null jáde tí ohun èlò gbọdọ̀ kojú láìṣe ìbéèrè.

Kí ló dé tí a fi darapọ̀ àwọn àṣẹ méjì?

Ìkàwé àti ìpọ̀sí lọ́tọ̀ọ̀tọ̀ ń jẹ́ kí àwọn òṣìṣẹ́ méjì rí ìkéré kannáà kí ẹnikẹ́ni tó ṣe àtúnṣe. Redis ń ṣiṣẹ́ Lua script lọ́nà atomiki, nítorí náà òṣìṣẹ́ mìíràn kò le fi yíyan sí àárín ìkàwé àti ìpọ̀sí script yìí. Jẹ́ kí script kúrú nítorí ṣíṣe rẹ̀ ń dí iṣẹ́ Redis mìíràn lọ́wọ́.

ZRANGE ń dá àmì tó kéré jù padà ní àkọ́kọ́; àwọn àmì tó dọ́gba ni a ń yanjú pẹ̀lú tẹ̀le-sí-tẹ̀le ọmọ ẹgbẹ́, kì í ṣe lọ́nà àìsí ìlànà. ZINCRBY ń pọ̀ àmì ọmọ ẹgbẹ́ tí a yàn sí i ní ọ̀kan fún ìpín tó kàn.

Ṣàlàyé ohun tí àmì túmọ̀ sí

Èyí ń ka àwọn ìpín, pẹ̀lú ìpín tí ìbéèrè nẹ́tíwọ́kì rẹ̀ yóò kùnà lẹ́yìn. Kò ń díwọ̀n ìdásẹ́, àwọn ìbéèrè tó ṣàṣeyọrí tàbí iṣẹ́ tó ń lọ lọ́wọ́. Ó ṣì ṣeé ṣe láti máa yan ọmọ ẹgbẹ́ kan ṣoṣo tó yẹ náà léraléra; script kò fi ìyàsọ́tọ̀ pamọ́ rẹ̀.

Tọ́jú yíyẹ pẹ̀lú àwọn ìlànà ìlera àti ìlànà adágún. Bí o bá yọ ọmọ ẹgbẹ́ kan kúrò tí o sì mú un padà lẹ́yìn, pinnu bóyá iye ìtàn rẹ̀ yẹ kí ó wà. Bíbẹ̀rẹ̀ aṣojú tí a mú padà ní òdo le kó àwọn ìpín jọ sórí rẹ̀ nígbà tí ó ń lé.

Ìlànà ìfarapẹ́ tó kéré jù nílò ìgbésí ayé mìíràn, pẹ̀lú ìparí àti ìtọ́jú àwọn iṣẹ́ tí a kọ̀ sílẹ̀. Má ṣe túmọ̀ olùka àpapọ̀ yìí gẹ́gẹ́ bí ìgbésí ayé yẹn.

Àwọn àpilẹ̀kọ tó jọra