5分钟学会Redis存值乱码问题解决方案

                                                   Redis存值乱码解决方案

 

一、前言

       首先,这里需明确一点,此乱码非彼乱码。

       产生原因 :在于我们配置 Redis 时,序列化方式的选择问题。

       如有想学习如何配置及使用 Redis 的猿友,请前往如下链接:

              5分钟学会Redis的配置及使用

 

二、Redis序列化方式

       ①、(默认的序列化方式)JdkSerializationRedisSerializer序列化方式,其编码为 ISO-8859-1,会出现乱码问题;

       ②、StringRedisSerializer序列化方式,其编码为 UTF-8,可以解决乱码问题;

           解决方案总结如下

 

 三、redisTemplate - 注解方式配置Redis

/**
 * 描述:redis配置类
 *
 *      redis序列化方式选择:
 *          1、(默认的)JdkSerializationRedisSerializer序列化方式,其编码为 ISO-8859-1,会出现乱码问题;
 *          2、StringRedisSerializer序列化方式,其编码为 UTF-8,可以解决乱码问题;
 *
 * @author yys
 * @date 2019.04.30
 */
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {

     @Bean
     public CacheManager  CacheManagercacheManager(RedisTemplate redisTemplate) {
     CacheManager cacheManager = new RedisCacheManager(redisTemplate);
     return cacheManager;
     }

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate redisTemplate = new RedisTemplate();
        redisTemplate.setConnectionFactory(factory);

        /**
         * 在这里,改用StringRedisSerializer序列化方式
         *      a、setKeySerializer:对redis的key值 设置序列化方式
         *      b、setValueSerializer:对redis的value值 设置序列化方式
         *                            (若配置则只能接受String类型,其他类型需转为String类型)
         */
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();

        redisTemplate.setKeySerializer(stringRedisSerializer); // a
        redisTemplate.setHashKeySerializer(stringRedisSerializer);
        redisTemplate.setValueSerializer(stringRedisSerializer); // b
        redisTemplate.setHashValueSerializer(stringRedisSerializer);
        
        return redisTemplate;
    }

}

 

 四、application-context.xml - 配置文件配置Redis




	

	
		
	

	
		
	

	
		
	

	
		
	

 

 

                       Now ~ ~ ~写到这里,就写完了,如果有幸帮助到你,请记得关注我,共同一起见证我们的成长

 

你可能感兴趣的:(redis系列)