【发布时间】:2016-12-28 00:57:34
【问题描述】:
假设我有一个带有一百万个键的 redis 实例。键包含团队 ID 和人员 ID,值包含有关该团队-人员关联的一些信息。示例键:
team:1:person:123
team:2:person:234
team:2:person:345
...
我可以使用带有模式的scan 来获取给定团队中的所有人。例如,scan 0 match "team:123:person:*" 将开始让每个人都加入 123 队。
听起来这不是在团队中迭代人员的有效方法,因为扫描是 O(N),其中 N 是 数据库中的键数。但我想确认一下——是这样吗?
具有树索引的数据库可能只需要扫描具有该前缀的键的树的一小部分。
如果它确实扫描了所有内容,那么我想如果我想快速迭代团队中的人员,我需要将一组人员 ID 存储在一个团队 ID 下。比如:
sset team:2:people 234 345 ...
【问题讨论】: