byte[]转换成String[]有问题出现
一 问题描述
场景是这个样子的:一个用户A在2019年12月4日的每一分钟是否在线都会在redis中设计一个位图来标记。
例如设计一个key:20191204:用户A的id号(这个用户A的id号是唯一的),这样就有每个用户一天之后一个key,n天有n个key。那20191204:用户A的id号的value是什么?就是该用户在这一天在线不在线的位图表示。例如用户8:05在线,则setbit 20191204:用户A的id号 8*60+5 1
【1:在线 0:不在线】,如果用户在11:59下线,则setbit 20191204:用户A的id号 11*60+59 0
,这样就有一个位图表示【节省空间】
【上篇博客使用了mget,类似管道的,为了提升性能】,我查了Jedis.mget
的方法
发现只能传进去一个String数组,返回的结果是一个List< String >,所以我就进行了返回的List< String >转换成List<byte[]>,然后就发现出错了【这个错误不是转换的错误,而是一个byte[]中是一个字节存储的,但是char是两个字节存储的,所以造成一个byte【一个字节】用char【两个字节】去存储的时候不足会填充为两个字节】,所以出现错误。
二 解决办法
小象找到了一个BinaryJedis
然后发现里面也有mget方法
这不就是我们想要的吗?
最后就成功解决了