最近在做手艺网的时候,用spring data对redis的支持发现了一个奇怪的现象,通过redisTemplate下的opsForHash方法存储hash类型的值,操作成功以后,去redis控制台显示keys * 的时候,发现一个奇怪的现象,插入的hash类型的key前面会有一堆的\xac\xed\x00\x05t 这种东西,无论在key中还是在value中都存在,后来跟踪了一下源码,最后序列化key值和value值的是DefaultSerializer这个类,其中关键代码如下
其中object就是key值或者value值,所以归根到底是ObjectOutputStream写入的问题,有兴趣的读者可以研究一下ObjectOutputStream的源码。
ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
objectOutputStream.writeObject(object);
objectOutputStream.flush();
其中object就是key值或者value值,所以归根到底是ObjectOutputStream写入的问题,有兴趣的读者可以研究一下ObjectOutputStream的源码。