2013-05-07 71 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

相关问题