redis出现\x00\x00\x00\x00\x00\x00\x00\x00的解决办法
昨天调试一个问题,redis拿出来的值总是无法decode成实体类,通过客户端查看数据库中的数据,发现json以外还有一段:\x00\x00\x00\x00\x00\x00\x00\x00
的数据,如图:
为何平白无故多出一段乱码?反复检查数据后并没有发现json有额外的数据,通过谷歌搜索的得到一个答案:
https://stackoverflow.com/questions/42824593/got-lots-of-x00-prefix-when-using-stringredistemplate
外国友人的回复如下:
Sorry about this asking. It's my fault. I made mistakes about using the set()method. The third parameter of set() method is not timeout value. It's offset. To fix it:
翻译如下:
set方法使用错误,第三个参数需要的并不是timeout的值,这是一个偏移参数值。
检查自己的参数后发现,我使用的是一个三个参数的set方法,而第三个参数并不能传入时间值,否则会出现\x00\x00\x00\x00\x00\x00\x00\x00\x00
的问题。正确的set方法原型为:
stringRedis.opsForValue().set(redisKey, value, ACTIVATION_CODE_TIMEOUT, TimeUnit.SECONDS);
将函数改为stringRedis.opsForValue().set(redisKey, value, ACTIVATION_CODE_TIMEOUT, TimeUnit.SECONDS)
后,问题得到解决。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。