1

我有很多数据(大约 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)维护另一个与他们所在列表的父母的集合(似乎加倍工作)。

我确定我在这里遗漏了一些东西。

4

0 回答 0