Redis:我如何通过键对哈希进行排序?

时间:2011-04-25 16:12:29

标签: redis

假设我有一些存储在哈希中的新闻。我有不同的哈希值(每个哈希代表一个新闻):

news:1
news:2
news:3
...

我想用KEYS命令检索所有键,如:

KEYS news:*

密钥未排序的问题:

news:3
news:1
news:2

我想按正确的顺序检索密钥列表。我不确定哈希是否是我需要的结构。但是,根据redis documentation

  

Redis Hashes是字符串字段和字符串值之间的映射,因此它们是表示对象的完美数据类型(例如,具有多个字段的用户,如姓名,姓氏,年龄等):

将我的新闻对象存储在哈希中似乎是一个好主意。

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

将Redis哈希视为索引文档。

HSET news:1 title levy_breaks
HSET news:1 type breaking_news
HSET news:1 byline alphazero
HSET news:1 date 04:25:2011
HSET news:1 content <the story>

HSET news:2 ...
..

在上文中,news:1是'哈希键',后跟'哈希字段',最后是其关联值。

那就是说,你似乎只想对你的'哈希键'进行排序。

使用MULTI/EXEC构造设置新闻项目(包含n个字段)的所有字段,最后还添加哈希键 - 例如你的新闻 - 它到一个有序的集合。或者,您可以将它们添加到列表中,并使用该列表上的SORT命令。

The Redis docs

答案 1 :(得分:2)

您可以做的是存储一组或存在的新闻项列表。例如,当您创建新的新闻项时,假设为news:4,您可以将索引4添加到一个集合,例如list:news,现在将[1, 2, 3, 4]

现在假设您的新闻哈希结构是日期,作者。有了这个,您可以执行以下操作:

sort list:news get *->some_value_a ->*->some_value_b