Redis通配符键的get操作

5

我正在使用redis进行Python项目开发,经过一些研究,我没有找到任何关于如何在包含通配符“*”的字符串上执行get()操作的说明。

所以我有几个键:

example.first
example.second

我想获取example.first和example.second的键/值:
mymap = r_server.hgetall('example.*')

有没有办法做到这一点?
1个回答

12

阅读更深入的文档后,我发现了这个:

mymap = r_server.keys(pattern='example.*')

如果这能帮助任何人!


6
深入阅读总是有益的,然而 Redis 的 KEYS 命令是危险的(请阅读文档),不应使用。如有需要,SCAN 是更好的替代方案,但你真正应该做的是完全避免基于模式的关键字搜索。 - Itamar Haber
谢谢回答,但我不能使用通配符,不过你说的keys()是对的,我会研究一下SCAN()。 - Steeven_b
1
@ItamarHaber 感谢您提供文档链接,我们可以在其中阅读何时使用SCAN而不是KEYS。在我的情况下,使用KEYS完全没有问题,因为我知道它永远不会匹配超过10或20个哈希。因此,这不会对性能造成“危险”。但是,我很想知道如何使用带通配符的SCAN / HSCAN。不知何故,我所有的尝试都失败了。这仍然是一个有效的答案缺失的问题。 - Wu Wei
匹配的键数是一个问题,第一个是扫描数据库,这与数据库中的总键数有关,而不仅仅是匹配的键数。 - Itamar Haber
@anarchist812 关于 scan 的要记住的事情是,在光标返回后才匹配模式,因此你可能会得到许多空白页面,直到找到一个匹配的模式为止。 - Djarid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接