gpt4 book ai didi

sorting - Redis 排序集合

转载 作者:可可西里 更新时间:2023-11-01 11:14:31 24 4
gpt4 key购买 nike

我正在尝试对以散列形式存储在 Redis 中的用户对象进行排序。 key 类似于 users:valid:2users:valid:5users:valid:10users:invalid: 14

我的目标是获取按 ID ASC 排序的用户,首先是有效用户。

我另外将用户 ID 存储在一个排序集中,其中“分数”是一个过滤器 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

它允许获取已经按 ASC 排序的用户 ID,首先有效。伟大的!然而……

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

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

https://redis.io/commands/zadd

When multiple elements have the same score, they are ordered lexicographically (they are still ordered by score as a first key, however, locally, all the elements with the same score are relatively ordered lexicographically). The lexicographic ordering used is binary, it compares strings as array of bytes.

有没有办法在 Redis 中正确实现这种排序?像将 ids 存储为整数以避免字典顺序或我能想出的任何其他方式?

最佳答案

您可以用零填充您的 ID(Sorted Set 成员),即“1”变为“000000001”,字典顺序将适用于您。但是,请确保填充 ID 的长度保持不变(例如 9 位数字)。

关于sorting - Redis 排序集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55880040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com