美文网首页
springboot redis key 乱码 key not

springboot redis key 乱码 key not

作者: ivms8200 | 来源:发表于2019-08-19 18:54 被阅读0次

springboot redis key 乱码 key not found

出现问题

springboot插入数据到redis后发现无法把插入到的数据查询出来,用redis工具查看后发现存入的key有部分是乱码,并且会报key not found错误。


0001-iedis key not found.png

原方式

@Autowired
    private RedisTemplate redisTemplate;

修改后代码

@Bean(name = "myRedisTemplate")
    public RedisTemplate<String, Object> myRedisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(factory);

        // 使用Jackson2JsonRedisSerialize 替换默认序列化(默认采用的是JDK序列化)
        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);

        redisTemplate.setKeySerializer(jackson2JsonRedisSerializer);
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashKeySerializer(jackson2JsonRedisSerializer);
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
        return redisTemplate;
    }

使用时直接注入即可

@Resource(name = "myRedisTemplate")
    private RedisTemplate<String, Object> myRedisTemplate;

记录网上其他方式

private RedisTemplate redisTemplate;

@Autowired(required = false)
public void setRedisTemplate(RedisTemplate redisTemplate) {
     RedisSerializer stringSerializer = new StringRedisSerializer();
     redisTemplate.setKeySerializer(stringSerializer);
     redisTemplate.setValueSerializer(stringSerializer);
     redisTemplate.setHashKeySerializer(stringSerializer);
     redisTemplate.setHashValueSerializer(stringSerializer);
     this.redisTemplate = redisTemplate;
}

相关文章

网友评论

      本文标题:springboot redis key 乱码 key not

      本文链接:https://www.haomeiwen.com/subject/fxvesctx.html