Redis 使用通配符查找键

Redis 使用通配符查找键,redis,Redis,我用分号保存了数据 redis> keys party:* 1) "party:congress:president" 2) "party:bjp:president" 3) "party:bjp" 4) "party:sena" 是否有任何命令将列出所有各方?在上面的例子中,我希望 congress bjp sena 不,没有这样的命令。 但如果您真的必须这样做,那么在客户端实现它将是微不足道的 应用程序不应使用KEYS命令检索数据。KEYS会在Redis实例线性扫描您存储的数百万

我用分号保存了数据

redis> keys party:*

1) "party:congress:president"
2) "party:bjp:president"
3) "party:bjp"
4) "party:sena"
是否有任何命令将列出所有各方?在上面的例子中,我希望

congress
bjp
sena

不,没有这样的命令。 但如果您真的必须这样做,那么在客户端实现它将是微不足道的

应用程序不应使用KEYS命令检索数据。KEYS会在Redis实例线性扫描您存储的数百万个密钥时阻塞整个Redis实例。它更像是一个应该在管理工具中使用的调试命令


使用Redis,没有索引键的B树结构,因此您无法查询键,除非您的键存储在现有集合中(set、zset等)

我认为如果您想从Redis获取“参与方”数据,那么每次保存常规数据时,您也会将参与方名称保存到参与方列表中,然后您就可以轻松地获取它了

您可以使用redis中的SCAN命令来搜索密钥,而不会阻塞整个数据库

此命令有一个可选的匹配过滤器,其工作原理与“关键点”命令上的过滤器非常相似

redis> SCAN 0 MATCH party:*

1) <the cursor>
2) 1) "party:congress:president"
   2) "party:bjp:president"
   3) "party:bjp"
   4) "party:sena"
redis>SCAN 0匹配方:*
1) 
2) 1)“党:代表大会:主席”
2) “政党:印度人民党:总统”
3) “缔约方:印度人民党”
4) “缔约方:塞纳”
继续调用,直到光标返回0以获取所有参与方 (如果扫描时插入了所有参与方,则可能无法获取所有参与方)


从2.8版开始提供,您可以使用
*
通配符

例子 要使用通配符获取所有用户,请执行以下操作:

KEYS user:*
结果将是:

1) "user:1"
2) "user:2"

您必须为此维护单独的列表,我认为通过部分键进行搜索并不昂贵。因为我刚刚了解了redis,我不确定它有多准确。我认为您可能需要更新答案以包含更多详细信息。可以按部分键搜索,但不可能按部分键高效搜索,除非您为此显式创建数据结构。此外,这里最初的问题不是关于搜索,而是关于结果的操作(最好在客户端完成)。好的一点,我在搜索部分关键字,这是谷歌的第二个结果。
1) "user:1"
2) "user:2"