-
EVALyêu cầu tối thiểu hai đối số; tập lệnh và số khóa bạn đang chuyển cho tập lệnh. Trong trường hợp này, bạn đang chuyển 0 khóa, nghĩa là tập lệnh có thể được gọi như sau:redis-cli EVAL "$(cat sum.lua)" 0hoặc:
redis-cli --eval sum.lua -
Cấu trúc vòng lặp của bạn để lặp lại các giá trị được trả về từ
KEYSđã sai; Tôi đã sửa nó cho bạn. -
Bạn cần chuyển đổi giá trị trả về từ
GETtừ một chuỗi thành một số bằng cách sử dụngtonumbercủa Lua chức năng.
Với những thay đổi ở trên được thực hiện, tập lệnh sau sẽ phù hợp với bạn:
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