当前位置: 首页 > 面试题库 >

Redis:如何按键对哈希进行排序?

高高雅
2023-03-14
问题内容

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

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

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

KEYS news:*

密钥未排序的问题:

news:3
news:1
news:2

我想以正确的顺序检索键列表。我不确定哈希是否是我需要的结构。但是,根据redis文档:

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

将我的新闻对象存储在散列中似乎是个好主意。

有什么建议么 ?


问题答案:

将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在该列表上使用命令。

Redis文档。



 类似资料:
  • 例如,我有Hashmap 如何根据键的某些属性对Map进行排序?

  • 我有一个代码,我需要跟踪不同类别中给定位置的一些值(随机出现)(并且数量相当大;~40,000),所以我认为散列散列是最好的方法,类别作为第一层键,位置作为第二层,值作为值;类似于: 然后,我需要按照这两个类别的顺序对它们进行排序和打印,然后进行定位,得到如下输出文件: 但是我无法计算出嵌套排序的语法(或者,有人比这种方法有更好的想法吗?

  • 我想在命令行上这样做,所以像这样的事情会很好: 上面的方法当然不适合散列。所以最后我需要打电话 以自动化的方式。

  • 我有一个HashMap,其中类的对象(对象1,对象2,对象3)作为键,java.util.Date(日期1,日期2,日期3)作为值。HashMap已经根据值进行了排序,即基于日期对象。键对象具有名为name的属性。 现在,当HashMap的值相同时,即当值的日期相同时,我需要检查键对象的名称(obj.name),并根据键对象的名称属性对HashMap进行排序。请注意,只有当HasHMap和值的日期

  • 问题内容: 我有一个,我想找到每个值的键数 根据上面的帖子,我尝试了平面映射: 输出是 这意味着0有两个键,1有三个键,依此类推。现在,我想根据键的数量以降序对键和值进行排序。我尝试过这样的事情: 我想要以下输出: 键和值应根据此键的数量降序排列:1、2、3、4具有三个键,0和5具有两个键。 例如::1具有三个键,因此它首先出现:2和3具有三个键,而0仅具有两个键。 问题答案: 您可能具有以下内容