【问题标题】:In Redis, command for retrieving values from sorted-set在 Redis 中,用于从排序集中检索值的命令
【发布时间】:2013-12-14 06:47:27
【问题描述】:

我尝试使用以下代码将一些示例分值对添加到 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 命令/代码?

【问题讨论】:

    标签: redis sortedset


    【解决方案1】:

    你想要的是调用 ZSCORE 键“1034”

    或者在只想要两个特定分数之间的元素的情况下 ZRANGEBYSCORE 键下上

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

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

    查看所有排序集命令,请参考http://redis.io/commands#sorted_set

    【讨论】:

    • 只是不知道某些命令仅适用于 cretain 数据类型..这是我所期望的答案..谢谢
    • 假设我有一组键(列表、集合和映射)但不知道它的类型。有没有任何命令或方法可以知道键的类型??
    • 确定.. 你想要 TYPE 命令。查看redis.io/commands#generic 处的所有关键命令
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-12
    相关资源
    最近更新 更多