-
EVAL
wymaga minimum dwóch argumentów; skrypt i liczbę kluczy, które przekazujesz do skryptu. W tym przypadku przekazujesz klucze zerowe, co oznacza, że skrypt można wywołać w następujący sposób:redis-cli EVAL "$(cat sum.lua)" 0
lub:
redis-cli --eval sum.lua
-
Twoja struktura pętli do iteracji po wartościach zwróconych z
KEYS
był niepoprawny; Naprawiłem to za Ciebie. -
Musisz przekonwertować wartość zwróconą z
GET
od ciągu do liczby za pomocątonumber
Lua funkcja.
Po wprowadzeniu powyższych zmian następujący skrypt powinien działać dla Ciebie:
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