Redis: Is it possible to sort an ordered result with the same score with a different key value

ZADD myset 1 ad1
ZADD myset 1 ad2

SET order:ad1 1
SET order:ad2 2

How to sort the ordered setpoint first, then the order value?

+3
source share
1 answer

If you want to save the result (without changing the way data is stored), you can use the SORT command . It can be applied to zset.

For instance:

> zadd myset 1 albert
> zadd myset 1 joseph
> zadd myset 4 bertrand
> zadd myset 2 casimir
> zadd myset 3 alfred

You can sort by value:

> sort myset alpha
1) "albert"
2) "alfred"
3) "bertrand"
4) "casimir"
5) "joseph"

You can sort the score and value:

> zrange myset 0 -1
1) "albert"
2) "joseph"
3) "casimir"
4) "alfred"
5) "bertrand"

Now add a new property to these objects:

> set order:albert 5
> set order:alfred 3
> set order:casimir 1
> set order:joseph 4
> set order:bertrand 2

You can sort by the property of the new order:

> sort myset by order:*
1) "casimir"
2) "bertrand"
3) "alfred"
4) "joseph"
5) "albert"

, , , order zset order.

, order zset, :

> del myset
> zadd myset 1 5:albert
> zadd myset 1 4:joseph
> zadd myset 4 2:bertrand
> zadd myset 2 1:casimir
> zadd myset 3 3:alfred
> zrange myset 0 -1
1) "4:joseph"
2) "5:albert"
3) "1:casimir"
4) "3:alfred"
5) "2:bertrand"

: , , . . , "1", "12" "123" "11", "212" "3123", .

, , , . , zset .

> zrange myset 0 -1 withscores
> sort myset by order:* get order:* get #

( - ) , .

+9

All Articles