有没有办法使用字符串作为 Redis 排序集 (zset) 中的分数?

tim*_*bur 6 sorting dataset redis

或者也许问题应该是:将字符串表示为数字的最佳方式是什么,这样对它们的数字表示进行排序会得到与按字符串排序相同的结果?我设计了一种方法,可以对每个字符串最多 9 个字符进行排序,但似乎应该有更好的方法。

提前,我认为使用 Redis 的词典命令不会起作用。(请参阅以下示例。)

示例:假设我想对链接到某个 ID 的所有名称进行预排序,以便我可以使用 ZINTERSTORE 根据名称快速获取 ID 的有序列表(无需使用 redis 的 SORT 命令)。理想情况下,我会将 ID 作为 zset 的成员,并且每个名称的数字表示形式将是 zset 的分数。

那有意义吗?还是我做错了?

Ita*_*ber 3

您正在尝试使用保序哈希函数为每个 id 生成分数。虽然看起来您已经写了一个,但您已经发现分数的范围允许您仅使用前 9 个字符(顺便说一句,看看您的函数会很有趣)。

除了这种方法,这里有一种更简单的方法,在我看来会更容易 - 使用表单的集合成员<name>:<id>并将分数设置为 0。您将能够以这种方式使用字典顺序,并使用类似split(':')从集合的 id 中获取 id 的方法。成员。

  • 好吧,我刚刚坐下来开始处理这个问题所涉及的项目,并立即意识到这不适用于我想做的事情,或者至少没有我想要的那么高效。我希望能够使用 ZINTERSTORE 将一组 ID 与 ZSET 相交,这需要 ZSET 使用 ID 作为其成员。 (2认同)