在Redis中,用于从排序集中检索值的命令

时间:2013-11-28 09:45:41

标签: redis sortedset

我尝试使用以下代码将一些样本得分 - 值对添加到redis排序集:

  String key = "set";
  redis.zadd(key, 5, "1034");
  redis.zadd(key, 2, "1030");
  redis.zadd(key, 1, "1089");

并尝试使用byteArray和BitSet

检索它
  byte[] byteArr = redis.get(key.getBytes());
  BitSet bitSet = fromByteArrayReverse(byteArr);  
  System.out.println(bitset.toString()));

我也尝试过执行

  System.out.println(redis.get(key.getBytes()));

应该给我一个字节数组的地址

但对于这两个命令我都会收到错误

“针对持有错误值的密钥的ERR操作”

所以有人可以告诉我为什么这个错误首先出现,还有正确的redis命令/代码从redis排序集中检索值?

1 个答案:

答案 0 :(得分:1)

你想要的是打电话   ZSCORE键“1034”

或者只想要两个特定分数之间的元素   ZRANGEBYSCORE键下部

由于你也有“排名”(位置或索引,如列表中所示),你也可以询问你集合中的前三个元素   ZRANGEBYRANK键0 2

您得到的错误是因为一旦为键分配了一个值,该值就定义了redis上内部结构的类型,并且您只能使用该特定结构的命令(或者诸如DEL之类的通用键命令)等等)。在您的情况下,您尝试将排序的集合与字节操作混合,但它不匹配。

要查看所有已排序的设置命令,请参阅http://redis.io/commands#sorted_set