在开发中一般使用RedisTemplate 都是传递泛型参数。或者直接StringRedisTemplate进行redis的操作,
这次开发偶尔直接使用了RedisTemplate。结果发现redis里查找不到对应的key-value键值对,百度后,才知道\
spring-data-redis的RedisTemplate<K, V>模板类在操作redis时默认使用JdkSerializationRedisSerializer来进行序列化.
查看源码,也可以发现。如果没有配置redis key和 value的序列化方式 defaultSerializer,默认 是按照jdk的序列化方式进行存储的。
if (defaultSerializer == null) { defaultSerializer = new JdkSerializationRedisSerializer( classLoader != null ? classLoader : this.getClass().getClassLoader()); } if (enableDefaultSerializer) { if (keySerializer == null) { keySerializer = defaultSerializer; defaultUsed = true; } if (valueSerializer == null) { valueSerializer = defaultSerializer; defaultUsed = true; } if (hashKeySerializer == null) { hashKeySerializer = defaultSerializer; defaultUsed = true; } if (hashValueSerializer == null) { hashValueSerializer = defaultSerializer; defaultUsed = true; } }