假设我有一些存储在哈希中的新闻。我有不同的哈希值(每个哈希代表一个新闻):
news:1
news:2
news:3
...
我想用KEYS命令检索所有键,如:
KEYS news:*
密钥未排序的问题:
news:3
news:1
news:2
我想按正确的顺序检索密钥列表。我不确定哈希是否是我需要的结构。但是,根据redis documentation:
Redis Hashes是字符串字段和字符串值之间的映射,因此它们是表示对象的完美数据类型(例如,具有多个字段的用户,如姓名,姓氏,年龄等):
将我的新闻对象存储在哈希中似乎是一个好主意。
有什么建议吗?
答案 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
命令。
答案 1 :(得分:2)
您可以做的是存储一组或存在的新闻项列表。例如,当您创建新的新闻项时,假设为news:4
,您可以将索引4添加到一个集合,例如list:news
,现在将[1, 2, 3, 4]
。
现在假设您的新闻哈希结构是日期,作者。有了这个,您可以执行以下操作:
sort list:news get *->some_value_a ->*->some_value_b