需求:从redis中取服务已经生成的校验码
redis可视化工具上看到是有值如下,
取值代码:
RedisUtils.java
public static Object getValue(final String key) {
return redisTemplate.opsForValue().get(key);
}
但是使用RedisTemplate工具类取获取值时为空,甚至key值也不存在!!!debugger发现RedisTemplate使用的序列化方式是:JdkSerializationRedisSerializer,猜想是不是取值的时候RedisTemplate把我们的值转换为了其他的格式。为了检验,在本地生成校验码存到本地redis代码和结果如下:
xxxxServive.java
RedisUtils.setValueTimeout("TEST","checkCode2333" ,500);//redis工具类存值和时间
RedisUtils.java
setValueTimeout()
public static void setValueTimeout(final String key, final Object value, final long timeout) {
redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS);
}
RedisTemplate把我们的数据序列化为不可读的格式
接着验证StringRedisTemplate
public static void setValueTimeout(final String key, final Object value, final long timeout) {
redisTemplate.setKeySerializer(new StringRedisSerializer());//指定序列化方式
redisTemplate.setValueSerializer(new StringRedisSerializer());//指定序列化方式
redisTemplate.opsForValue().set(key, value, timeout, TimeUnit.SECONDS);
}
结果正常了!!!
破案了!



