-
EVAL
membutuhkan minimal dua argumen; skrip dan jumlah kunci yang Anda berikan ke skrip. Dalam hal ini, Anda melewatkan kunci nol, artinya skrip dapat dipanggil sebagai berikut:redis-cli EVAL "$(cat sum.lua)" 0
atau:
redis-cli --eval sum.lua
-
Struktur loop Anda untuk mengulangi nilai yang dikembalikan dari
KEYS
tidak benar; Saya telah memperbaikinya untuk Anda. -
Anda perlu mengonversi nilai yang dikembalikan dari
GET
dari string ke nomor menggunakantonumber
Lua's fungsi.
Dengan perubahan di atas, skrip berikut akan bekerja untuk Anda:
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