项目工程配置使用fastjson实现redis数据读写后的序列化及反序列化,开发过程提示fastjson序列化redis数据异常,提示不符合json格式,使用redis-cli检索redis数据发现json字符串前面多了很多‘/x00’,如下图:
从截图可以看出确实不符合json格式,经检查其他数据并没有这种情况,初步定位是写数据问题,
发现写数据用了如下API:
this.redisTemplate.opsForValue().set(key, value, ttl);
其他正常写数据的使用的是如下API:
this.redisTemplate.opsForValue().set(key, value, ttl, TimeUnit.SECONDS);
可以发现导致数据不符合json格式的原因是在api里面没有指定有效期单位。加上单位后复测发现数据能够正常解析,为什么不指定时间单位会出现这个问题呢?暂时留个疑问。。。