Я пытаюсь подключить redis через C#, используя ServiceStack.Redis
.Оптимизация сценария Lua
Я написал под кодом, чтобы подтвердить номер на основе указанного ключа.
argv[1]
является ключевым
argv[2]
это номер
string strScript = " local intCurrentVal = redis.call('GET', '' .. ARGV[1] .. ''); \n"
+ "if (tonumber(intCurrentVal) <= 0) then return 1 elseif ( (tonumber(intCurrentVal)) - (tonumber('' .. ARGV[2] .. '')) < 0) then return 0 end;"
+ "local intUpdatedVal = redis.call('SET', '' .. ARGV[1] .. '',(intCurrentVal - tonumber('' .. ARGV[2] .. '')));"
+ "local intCurr = redis.call('GET', '' .. ARGV[1] .. ''); return intCurr";
логические шаги:
- получить текущее значение
- проверить, если текущее значение не должно быть меньше или равно 0
- проверить, существует ли аренду значение - переданное значение не должно быть меньше, то O
- , если текущее значение - прошло не менее 0, то установить (текущее значение - передается) как текущее значение
- получить текущее значение
Можно ли оптимизировать и настроить следующий сценарий lua для производительности. пожалуйста помоги.
Он должен быть внутри блока транзакций. – user2771292
какой транзакционный блок? – Schollii
О том, сколько тысяч транзакций в секунду мы говорим? Профилировали ли вы и обнаружили, что сценарий Lua является проблемой? – dualed