gpt4 book ai didi

redis - 如何将扫描限制为特定的一组键

转载 作者:可可西里 更新时间:2023-11-01 11:13:32 31 4
gpt4 key购买 nike

在 redis (2.8.x) 中,我有三种实体类型(我定义了实体)。
为简单起见,我们称它们为组织部门用户
当我运行扫描时,它会遍历内存中的所有键,但只会带来与 match 子句匹配的内容。
有没有办法将 scan 限制为仅键的一个子集?例如搜索只有 users 键组?
每个组都有不同(但一致)的键名模式(org:[id] dep:[id] user:[id])

最佳答案

SCAN有一个可选的 MATCH 参数,该参数接受 glob 模式。

你可以做这样的事情来扫描你的用户对象:

SCAN 0 MATCH user:*

编辑,因为评论太长了

显然扫描不是一个神奇的方法,一个完整的循环(直到你收到“0”光标)必须经过你所有的键空间。 MATCH 选项在 Redis 端执行过滤,而不是在您的客户端执行。

正如 Itamar 在他的评论中所建议的那样,为了能够在不遍历整个键空间的情况下获得所需的键,您必须将它们编入索引(您还必须在删除时维护它)。

例如,如果您的用户 key 是:

user:31 user31data
user:45 user45data
user:67 user67data
user:13 user13data

你应该有一个用户 ID 的 SET:

users:IDs {31, 45, 67, 13}

要检索所有用户数据,您可能需要 ID 和数据:

sort users:IDs by nosort get # get user:*

关于redis - 如何将扫描限制为特定的一组键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28570082/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com