-
EVAL
изисква минимум два аргумента; скрипта и броя на ключовете, които предавате на скрипта. В този случай предавате нулеви ключове, което означава, че скриптът може да бъде извикан, както следва:redis-cli EVAL "$(cat sum.lua)" 0
или:
redis-cli --eval sum.lua
-
Вашата структура на цикъла за повторение на стойностите, върнати от
KEYS
беше неправилно; Поправих го за вас. -
Трябва да преобразувате стойността, върната от
GET
от низ към число, използвайкиtonumber
на Lua функция.
С направените по-горе промени, следният скрипт трябва да работи за вас:
local sum = 0
local matches = redis.call('KEYS', 'carlos:*')
for _,key in ipairs(matches) do
local val = redis.call('GET', key)
sum = sum + tonumber(val)
end
return sum