Pín aṣojú tí kò gbà púpọ̀ lóòrèkóòrè nínú Redis
Lo àkójọ tí a tò lẹ́sẹẹsẹ àti Lua script kúkúrú láti yan àti pọ̀ sí i iye ìpín aṣojú láàárín àwọn òṣìṣẹ́.
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 chosenFi 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.