首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Lua从redis获取所有匹配关键模式的值。

通过Lua从redis获取所有匹配关键模式的值。
EN

Stack Overflow用户
提问于 2015-08-12 21:58:12
回答 1查看 7K关注 0票数 3

我试图使用py-redis和lua找到所有的键和它们的值匹配一个特定的模式,下面是我的代码。

代码语言:javascript
复制
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:*'])

我得到的输出是

代码语言:javascript
复制
100
100
None

首先,我不明白为什么我没有得到最后的打印声明。我最初的目的是获取与模式匹配的所有键(及其值),但我只获得第一个键。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-12 23:51:02

我想我已经找到了我失去的东西

我应该将键作为初始redis.call的第一个参数传递,而不是GET,然后迭代这些键以获得值。

代码语言:javascript
复制
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:*'])
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31976119

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档