我有很多数据(大约 650 万行)想用 Redis 来补充。基本上,我想使用排序集来存储数据的层次结构。因此,一些样本数据可能看起来像这样(以家谱为例)。
royalty_id | name | date | favorite_color | parent
================================================================
990 | George VI | 1895-1952 | purple | NULL
991 | Margaret | 1930-2002 | green | 990
992 | Elizabeth II | 1926- | yellow | 990
993 | Edward | 1964- | purple | 992
994 | Andrew | 1960- | brown | 992
995 | Anne | 1950- | pink | 992
996 | Charles | 1948- | purple | 992
997 | Harry | 1984- | red | 996
998 | William | 1982- | blue | 996
999 | George | 2013- | blue | 998
你明白了。我拥有的层次结构不是很深(最多可能有 8 个条目?),只有很多。当我浏览条目列表时,我想把它们放在一个 redis 排序集中,如下所示:
lpush ancestors_of.999 998
lpush ancestors_of.999 996
lpush ancestors_of.998 996
等等。问题是,这些条目在数据库中的顺序并不像在此示例数据中那样排列好。对于每一行,我可以查看层次结构的底部、顶部或中间。那么,最好的方法是什么?
以下是我考虑过的一些选项: 1) 继续上面的示例,但是对于每个数据库行,搜索每个列表的现有条目以查看新行是否已经存在(似乎效率很低)。2)维护另一个与他们所在列表的父母的集合(似乎加倍工作)。
我确定我在这里遗漏了一些东西。