通过Lua从redis中获取与键模式匹配的所有值

我正在尝试使用py-redis和lua查找所有与特定模式匹配的键及其值,这是我的代码

rc = redis.Redis(..)

rc.set('google:',100)
rc.set('google:3',200)
rc.set('google:2',3400)
rc.set('google',200)
rc.set('fb',300)

get_script = """
local value = redis.call('GET', KEYS[1])
return value
"""
get_values = rc.register_script(get_script)

print get_values(rc.keys(pattern='google:*'))

print get_values(keys=['google:'])
print get_values(keys=['google:*'])

我得到的输出为

100
100
None

首先,我不明白为什么我对于最后一个print语句得到了None。我的原始目的是获取与模式匹配的所有键(及其值),但我只获取了第一个键。

点赞
用户399111
用户399111

我认为我已经找到了我所缺少的东西

与其使用GET,我应该将KEYS作为初始redis.call的第一个参数传递,然后遍历这些键以获取值

get_script = """
local keys = (redis.call('keys', ARGV[1]))
local values={}

for i,key in ipairs(keys) do
    local val = redis.call('GET', key)
    values[i]=val
    i=i+1
end

return values
"""
get_values = rc.register_script(get_script)

print get_values(args=['google:*'])
2015-08-12 23:51:02