在redis中存储重复列表

时间:2016-04-05 14:38:52

标签: redis

我正在尝试确定跟踪重复列表的方式。

目前我有不应重复的字符串示例

superduper duplicate 333
superduper duplicate 555
superduper 557

我想跟踪“superduper duplicate”333与555相同。一旦找到重复,我只需要同时跟踪333和555,并且可以找到超过2个重复项。

每个项目都有一个ID号,用于识别找到的副本。

如果我使用排序列表或Set,我无法轻松地将id字段与字符串一起存储。 如果我使用列表,则无法存储id字段。 我没有考虑得分。
我正在使用多线程程序,所以我不能依赖于插入顺序。

任何有助于我在Redis中存储此信息的结构的想法。

1 个答案:

答案 0 :(得分:0)

这是我提出的解决方案。我向所有有更好主意的人开放。

我有一个重复列表,它是一个得分(zset),用于存储该字符串的字符串和id。

Duplicates  (zset)
- "superduper duplicate" 333
- "superduper duplicate" 555 *wouldn't be added but here for example purposes
- "testing"  123
- "tester"   101
- "testing"  999 *wouldn't be added but here for example purposes

然后我将重复信息存储在另一个列表中

DuplicatesListId (Set)
- 333
- 123

然后我创造&保留所有ID的列表,其中包含额外的映射重复ID。

DuplicateId:333 (Set)
- 555

DuplicateId:123 (Set)
- 999

这允许我查找并获取DuplicatesListId中的所有项目,然后使用特定密钥获取每个重复信息,因为我不知道最初重复的ID。 "重复" (zset)列表是临时的,用于跟踪重复列表中的哪些项目以及它的相应ID。