如何通过前缀的数字范围获取所有redis密钥

问题描述 投票:0回答:1

我需要通过62-125范围的前缀来获取所有密钥,并在其后加':'

我尝试运行以下命令没有成功:

res = r.keys('[62-125]:*')

也尝试使用扫描:

iter = r.scan_iter('^(6[2-9]|7[0-9]):*')
res = []

for key in iter:
    res.append(key)

这甚至可能吗?如果是,如何?

一些例子,如果不清楚:

应检索的密钥:

62:kk:345345345
72:hg:76576
88:fg:67886
122:hg:8678
124:gg:8678

不应该检索的密钥:

0:df:09765
20:gg:6565
38:hh:345
44:bb:3454
61:bb:6568

我的数据库中的所有键都以数字前缀开头,如果有关系,后跟':'。

regex redis prefix redis-cli
1个回答
0
投票

有效的解决方案:

RES = []

_res = r.keys('6[2-9]:*')
RES.append(_res)

for i in range(7,10):
    _res = r.keys('{}[0-9]:*'.format(i))
    RES.append(_res)

for i in range(0,3):
    _res = r.keys('1{}[0-9]:*'.format(i))
    RES.append(_res)

此方法有效,但我不接受此答案。1.令人恶心,使我自我厌恶2.根本没有效率

如果可能,我会投票反对自己的解决方案。请提出一个更好的建议。

© www.soinside.com 2019 - 2024. All rights reserved.