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

时间:2014-10-18 19:46:26

标签: sorting redis dataset sorted

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

事先,我不认为使用Redis的词典编纂命令会起作用。 (参见以下示例。)

示例:假设我要预先分配链接到某个ID的所有名称,以便我可以使用ZINTERSTORE根据其名称快速获取ID的有序列表(不使用redis' SORT命令)。理想情况下,我会将ID作为zset的成员,每个名称的数字表示将是zset的分数。

这有意义吗?或者我错了吗?

1 个答案:

答案 0 :(得分:1)

您正在尝试使用订单保留哈希函数来为每个ID生成分数。虽然看起来你已经写了一个,但你已经发现得分的范围允许你只使用前9个字符(看到你的功能btw会很有趣)。

而不是这种方法,这里有一个更简单的IMO - 使用<name>:<id>形式的集合成员并将分数设置为0.您将能够以这种方式使用词典排序并使用某些东西像split(':')一样从集合中获取id。