redis как получить отсортированного члена набора со счетом?

#redis

#redis

Вопрос:

Я новичок в Redis.

 127.0.0.1:6379> zadd myset 1 'one'
(integer) 1
127.0.0.1:6379> zadd myset 2 'two'
(integer) 1
127.0.0.1:6379> zadd myset 3 'three' 4 'four' 
(integer) 2
127.0.0.1:6379> zadd myset 10 'ten' 9 'nine'
(integer) 2
 

Я пробовал ZRANGEBYSCORE, но он показывает только участника..

 127.0.0.1:6379> ZRANGEBYSCORE myset -inf  inf
1) "one"
2) "two"
3) "three"
4) "four"
5) "nine"
6) "ten"
 

Но я хочу получить пары Оценка / участник.

Как я могу получить эти пары?

Комментарии:

1. вам нужно добавить WITHSCORES в конце, ZRANGEBYSCORE myset -inf inf WITHSCORES

2. Спасибо за ответ. вы правы.. но я ищу способы выражения в стиле массива или списка.. Это невозможно в Redis?

Ответ №1:

Как уже прокомментировал @Ersoy:

вам нужно добавить WITHSCORES в конце, ZRANGEBYSCORE myset -inf inf WITHSCORES

Ответ отправляется в следующем формате:

 1) MEMBER_1
2) SCORE_1
3) MEMBER_2
4) SCORE_1
...
 

Если вы хотите получить ответ в виде списка / массива пар, например:

 1) MEMBER_1, SCORE_1
2) MEMBER_2, SCORE_2
...
 

Любой нормальный клиент Redis [1], даже на вашем предпочитаемом языке, скорее всего, преобразует его как таковой.

[1] не включая redis-cli