Jedis zrangWithScores结果直接打印是ASCII码的值的问题

     在使用jedis的zrangeWithScores获得redis的zset时,如果直接打印出来其中的element是一个byte数组,并且打印出来的是ASCII码的值:

看了一下该方法的返回值是一个Set,所以就逐个打印出Set的中的元素,发现还是一个member的值还是一个数组:

仔细看了该方法的返回值发现泛型是Tuple的,所以点进去看了一下,发现该类由一个私有成员是byte类型的数组:

接着发现该类重写了toString方法,里面使用了Arrays.toString方法,再点进去看一下:

可以看到该方法使用了一个StringBuilder类型的变量,使用一对[],把数组中的每一个元素在加进去然后把该变量变成String返回,和我们运行结果中看到的输出格式完全一致,两对[],前面一对[]里面是集合中的元素也就是byte数组,后面是score的值。

此外在Tuple类中发现由方法把byte数组转换成String:

看一下encode方法:

看到这明白了这个方法是把字节数据变成它对应的UTF-8编码的字符数据,所以使用该方法我们就能打印出设置集合member值的值:

        最后注意到了以WithScores结尾的方法返回类型都是Set<Tuple>,而另外一些获得集合member的方法返回值类型是Set<String>类型的,前者直接打印的结果和设置值的时候的值不一致,需要使用getElement方法把字节数据转换成字符数据,而后者由于泛型是String类型的,可以直接打印,结果和设置集合值的时候一致。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卷福。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值