gpt4 book ai didi

redis - 使用前缀匹配模式的 redis 扫描是否扫描数据库中的所有键?

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

假设我有一个带有一百万个键的 Redis 实例。键包含团队 ID 和人员 ID,值包含有关团队与人员关联的一些信息。示例键:

team:1:person:123
team:2:person:234
team:2:person:345
...

我可以使用带有模式的扫描来获取给定团队中的所有人。例如,扫描 0 匹配“team:123:person:*”,将开始获取团队 123 中的每个人。

听起来这不是迭代团队中人员的有效方法,因为扫描是 O(N),其中 N 是数据库。但我想确认——是这样吗?

具有树索引的数据库可能只需要扫描树的一小部分,使用带有该前缀的键。

如果它扫描所有内容,那么我想如果我想快速迭代团队中的人员,我需要将人员 ID 集存储在团队 ID 下。像这样的东西:

sset team:2:people 234 345 ...

最佳答案

But I want to confirm - is that the case?

确认,确实如此。

store the set of person IDs under a team ID

这正是您应该做的。但是,请注意,一旦 Set 变得太大,就会执行 SMEMBERS可能是一项昂贵的操作(因此会影响整体性能)。如果这确实成为问题,请使用 SSCAN取而代之的是悠闲地取回它。

关于redis - 使用前缀匹配模式的 redis 扫描是否扫描数据库中的所有键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41348963/

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