我试图使用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首先,我不明白为什么我没有得到最后的打印声明。我最初的目的是获取与模式匹配的所有键(及其值),但我只获得第一个键。
发布于 2015-08-12 23:51:02
我想我已经找到了我失去的东西
我应该将键作为初始redis.call的第一个参数传递,而不是GET,然后迭代这些键以获得值。
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:*'])https://stackoverflow.com/questions/31976119
复制相似问题