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

时间:2016-04-08 08:03:22

标签: java redis jedis

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

  • (键,字段,值)
  • sampleKey,01234 :: Test,firstValue
  • sampleKey,01234 :: Real,secondValue
  • sampleKey,01235 :: Test,firstValue
  • sampleKey,01235 :: Real,secondValue

使用" Set set = jedis.hkeys(sampleKey)"得到一个集合。然后由System.arraycopy转换为Array。 我检查了数组,数据存储就像" 01235 :: Test,01234 :: Real,01235 :: Real,01234 :: Test"。它不按顺序存储。

我需要按顺序获取数据.. 谁能在这里给我一个帮助〜!谢谢。

1 个答案:

答案 0 :(得分:1)

尝试使用TreeSet而不是通用Set。

您更有可能无法直接投射,但您可以尝试:

TreeSet<String> set = new TreeSet<>();

按字段排序:

set.addAll(jedis.hkeys(sampleKey));

按价值订购:

set.addAll(jedis.hvals(sampleKey));

在TreeSet中,值按顺序存储。对于自定义对象,您必须实现Comparable,但对于基元,您不需要执行任何操作。

注意:请记住,对于字符串,顺序区分大小写,因为您使用的数字没有问题,但如果您使用单词,则会使用大写单词。