2013-05-07 3 views
2

Я новичок в redis и читаю документацию. Я не могу найти решение моей проблемы.Есть ли способ вернуть отсортированный список ключей из хэша?

У меня есть хэш с именами и номерами телефонов, и я хотел бы получить отсортированный список ключей в хэше.

Так что мой хэш (телефонная книга) выглядит следующим образом:

Andrew -> 9999 
Sam -> 6666 
Eddy -> 5555 

Если я бегу hkeys phonebook я получаю это (ключи возвращаются как они хранятся):

Andrew 
Sam 
Eddy 

И я хотел бы получить это (упорядоченные ключи):

Andrew 
Eddy 
Sam 

Как я могу его заархивировать? Я использую правильную структуру данных?

+1

вы видели это? http://stackoverflow.com/questions/5780365/redis-how-can-i-sort-my-hash-by-keys – raffian

+0

@SAFX Итак, насколько я понимаю, мне нужно построить параллельный список с ключи хеша, а затем отсортировать этот список? – Ander2

+0

Найден лучший способ сделать это, см. Ниже, надеюсь, что это поможет ... – raffian

ответ

2

Для этого вы можете использовать отсортированный набор, а не хэш, и вам не нужно поддерживать параллельный список; все это содержится в одной структуре ...

занесение отсортированного набора ...

> zadd ss:phonebook 9999 Andrew 
> zadd ss:phonebook 4444 Sam 
> zadd ss:phonebook 3333 Bob 
> zadd ss:phonebook 7777 Maria 
> zadd ss:phonebook 8888 Sophia 

Поскольку ss:phonebook содержит строковые значения (имена), и вы хотите, чтобы отсортировать их лексический, используйте модификатор ALPHA :

> SORT ss:phonebook ALPHA 
1) "Andrew" 
2) "Bob" 
3) "Maria" 
4) "Sam" 
5) "Sophia" 

Надеется, что это помогает ...

+0

Ваше решение работает, и оно действительно. Спасибо за вашу помощь. – Ander2

Смежные вопросы