2013-05-07 69 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 2013-05-07 15:35:55

+0

@SAFX所以,據我所知,我必須建立一個並行列表與哈希鍵,然後排序該列表? – Ander2 2013-05-08 20:03:02

+0

找到了一個更好的方法來做到這一點,請看下面,希望它有幫助... – raffian 2013-05-08 20:46:00

回答

2

您可以使用排序集來實現這一點,而不是散列,並且不需要維護並行列表;這一切都包含在一個單一的結構......

填充有序set ...

> 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 2013-05-08 21:12:33

相關問題