首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Redis排序排序集

Redis排序排序集
EN

Stack Overflow用户
提问于 2019-04-27 19:21:25
回答 1查看 528关注 0票数 1

我正在尝试对Redis中存储为散列的用户对象进行排序。关键字有users:valid:2users:valid:5users:valid:10users:invalid:14等。

我的目标是获取用户按他们的is排序,有效用户优先。

我还将用户id存储在一个有序的集合中,其中"score“是一个过滤器id。过滤器映射类似于{ valid: 0, invalid: 1 }

$redis.zadd 'sorted-ids', 0, 2
$redis.zadd 'sorted-ids', 0, 5
$redis.zadd 'sorted-ids', 0, 10
$redis.zadd 'sorted-ids', 1, 14

它允许获取已按顺序排序的用户ids,首先有效。太棒了!然而..。

$redis.zrange 'sorted-ids', 0, -1, with_scores: true
=> [["10", 0.0], ["2", 0.0], ["5", 0.0], ["14", 1.0]]

"10“在"2”之前。所以ids实际上不是按ASC排序的,因为它们是以字符串的形式存储的。

https://redis.io/commands/zadd

当多个元素具有相同的分数时,它们按字典顺序排序(它们仍然作为第一个键按分数排序,但是在本地,具有相同分数的所有元素都是按字典顺序相对排序的)。使用的字典顺序是二进制的,它将字符串作为字节数组进行比较。

在Redis中有没有一种方法可以正确地实现这种排序?比如将ids存储为整数以避免词法排序,或者其他我能想到的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-28 04:39:12

你可以用0填充你的ID(已排序的集合成员),例如,'1‘变成'000000001',字典序排序将为你工作。但是,请确保填充ID的长度保持不变(例如9位数字)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55880040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档