从redis到Lu获取与键模式匹配的所有值

2024-09-28 19:24:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用pyredis和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:*'])

我得到的输出是

^{pr2}$

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


Tags: 代码redisgetfbvaluegooglescriptkeys
1条回答
网友
1楼 · 发布于 2024-09-28 19:24:20

我想我已经找到了我缺少的东西

我应该把键作为初始参数传递,而不是GETredis.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:*'])

相关问题 更多 >