我尝试使用以下代码将一些样本得分 - 值对添加到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排序集中检索值?
答案 0 :(得分:1)
你想要的是打电话 ZSCORE键“1034”
或者只想要两个特定分数之间的元素 ZRANGEBYSCORE键下部
由于你也有“排名”(位置或索引,如列表中所示),你也可以询问你集合中的前三个元素 ZRANGEBYRANK键0 2
您得到的错误是因为一旦为键分配了一个值,该值就定义了redis上内部结构的类型,并且您只能使用该特定结构的命令(或者诸如DEL之类的通用键命令)等等)。在您的情况下,您尝试将排序的集合与字节操作混合,但它不匹配。
要查看所有已排序的设置命令,请参阅http://redis.io/commands#sorted_set