我们说我有一个拥有一百万个密钥的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 ...