在Java中,如何从Redis hkeys(键)获取有序集?

在Java中,如何从Redis hkeys(键)获取有序集?,java,redis,jedis,Java,Redis,Jedis,我在redis(绝地)中保存了哈希值,如下所示: (键、字段、值) sampleKey,01234::测试,第一个值 sampleKey,01234::Real,secondValue sampleKey,01235::测试,第一个值 sampleKey,01235::Real,secondValue 并使用“set set=jedis.hkeys(sampleKey)”获取一个集合,然后通过System.arraycopy将其转换为数组。 我检查了数组,数据的存储方式就像“01235::T

我在redis(绝地)中保存了哈希值,如下所示:

  • (键、字段、值)
  • sampleKey,01234::测试,第一个值
  • sampleKey,01234::Real,secondValue
  • sampleKey,01235::测试,第一个值
  • sampleKey,01235::Real,secondValue
并使用“set set=jedis.hkeys(sampleKey)”获取一个集合,然后通过System.arraycopy将其转换为数组。 我检查了数组,数据的存储方式就像“01235::Test,01234::Real,01235::Real,01234::Test”。它没有按顺序存储

我需要把数据整理好。。
有人能帮我一下吗~!谢谢。

尝试使用树集而不是通用集

更可能的是,你不能直接施放,但你可以尝试:

TreeSet<String> set = new TreeSet<>();
按价值排序:

set.addAll(jedis.hvals(sampleKey));
在树集合中,值按顺序存储。对于自定义对象,您必须实现Compariable,但对于基本体,您无需执行任何操作


注意:请记住,顺序对字符串是区分大小写的,因为您使用的是数字,所以没有问题,但是如果您使用单词,它会将大写单词放在前面。

为什么不在收到响应后对数组进行排序?哦,我认为这是从键开始的,因为他在示例中使用了hkeys。编辑!编辑:我实际上不确定他是想按字段还是按值排序,所以我添加了bothYes,这有点混乱。他使用“sampleKey”获得结果,但希望按“字段”排序。据我所知,问题是,对于绝地武士来说,你可以用同一把“钥匙”,存储多个字段,每个字段都有一个值;如果我理解正确的话。我知道他想按“字段”排序,而不是按值排序(hkeys返回所有字段)。正确,只是查了一下。所以他请求散列的所有字段,并希望得到这些字段的排序列表。。。所以我搞错了绝地API。很抱歉+1。此代码无法编译
hkeys
hvals
返回一个
,您不能强迫它成为
树集
set.addAll(jedis.hvals(sampleKey));