在Java中,如何从Redis hkeys(key)中获取有序的Set?
In Java, how to get an ordered Set from Redis hkeys(key)?
我将散列值保存在 redis(jedis) 中,如下所示:
- (键、字段、值)
- sampleKey,01234::Test,firstValue
- sampleKey,01234::Real,secondValue
- sampleKey,01235::Test,firstValue
- sampleKey,01235::Real,secondValue
然后用"Set set = jedis.hkeys(sampleKey)"得到一个set,然后用System.arraycopy转换成Array。
我检查了数组,数据的存储方式就像“01235::Test、01234::Real、01235::Real、01234::Test”。没有按顺序存储。
我需要按顺序获取数据..
任何人都可以在这里帮助我~!谢谢。
尝试使用 TreeSet 而不是通用 Set。
你更有可能不能直接施放它,但你可以试试:
TreeSet<String> set = new TreeSet<>();
按字段排序:
set.addAll(jedis.hkeys(sampleKey));
按值排序:
set.addAll(jedis.hvals(sampleKey));
在 TreeSet 中,值是按顺序存储的。对于自定义对象,您必须实现 Comparable,但对于原语,您无需执行任何操作。
注意:记住字符串的顺序是区分大小写的,因为你使用数字没有问题,但如果你使用单词,它会把大写单词放在前面。
我将散列值保存在 redis(jedis) 中,如下所示:
- (键、字段、值)
- sampleKey,01234::Test,firstValue
- sampleKey,01234::Real,secondValue
- sampleKey,01235::Test,firstValue
- sampleKey,01235::Real,secondValue
然后用"Set set = jedis.hkeys(sampleKey)"得到一个set,然后用System.arraycopy转换成Array。 我检查了数组,数据的存储方式就像“01235::Test、01234::Real、01235::Real、01234::Test”。没有按顺序存储。
我需要按顺序获取数据.. 任何人都可以在这里帮助我~!谢谢。
尝试使用 TreeSet 而不是通用 Set。
你更有可能不能直接施放它,但你可以试试:
TreeSet<String> set = new TreeSet<>();
按字段排序:
set.addAll(jedis.hkeys(sampleKey));
按值排序:
set.addAll(jedis.hvals(sampleKey));
在 TreeSet 中,值是按顺序存储的。对于自定义对象,您必须实现 Comparable,但对于原语,您无需执行任何操作。
注意:记住字符串的顺序是区分大小写的,因为你使用数字没有问题,但如果你使用单词,它会把大写单词放在前面。