zoukankan      html  css  js  c++  java
  • xACxEDx00x05tx00x0redis存key出现

    在使用RedisTemplate存key的时候发现在redis的key是这样的:
    在这里插入图片描述
    在RedisTemplate源码里面可以知道默认序列化是使用的JdkSerializationRedisSerializer就是jdk自己的序列化方式
    在这里插入图片描述
    在这里插入图片描述
    那就明了了,我们在创建的RedisTemplate指定序列化方式为阿里的FastJson2JsonRedisSerializer就可以了:
    一开始没有指定:
    在这里插入图片描述
    需要引入阿里的fastjson pom依赖 ;新增FastJson2JsonRedisSerializer类,:

    
    public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T> {
    
        public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
    
        private Class<T> clazz;
    
        public FastJson2JsonRedisSerializer(Class<T> clazz) {
            super();
            this.clazz = clazz;
        }
    
        @Override
        public byte[] serialize(T t) throws SerializationException {
            if (t == null) {
                return new byte[0];
            }
            return JSON.toJSONString(t, SerializerFeature.WriteClassName).getBytes(DEFAULT_CHARSET);
        }
    
        @Override
        public T deserialize(byte[] bytes) throws SerializationException {
            if (bytes == null || bytes.length <= 0) {
                return null;
            }
            String str = new String(bytes, DEFAULT_CHARSET);
    
            return (T) JSON.parseObject(str, clazz);
        }
    
    }
    

    添加序列化类
    在这里插入图片描述
    创建RedisTemplate的时候指定序列化:

       @Bean
        public RedisTemplate taskRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
            RedisTemplate<Object, Object> configRedisTemplate = new RedisTemplate<>();
            configRedisTemplate.setValueSerializer(fastJson2JsonRedisSerializer());
            configRedisTemplate.setHashValueSerializer(fastJson2JsonRedisSerializer());
            configRedisTemplate.setKeySerializer(new StringRedisSerializer());
            configRedisTemplate.setHashKeySerializer(new StringRedisSerializer());
            configRedisTemplate.setConnectionFactory(redisConnectionFactory);
            return configRedisTemplate;
        }
    

    但是测试发现还是一样的:试了很多总都是不行,最后想了想还是直接使用StringRedisTemplate,不使用RedisTemplate

     public StringRedisTemplate stringRedisTemplate() {
            StringRedisTemplate template = new StringRedisTemplate();
            template.setConnectionFactory(rddConnectionFactory());
            return template;
        }
    

    这样就好了…

    世界上所有的不公平都是由于当事人能力不足造成的.
  • 相关阅读:
    cisco route 831 IOS 备份升级ISO
    活动目录灾难恢复计划
    转载:IPsec的故障诊断与维修
    IPSEC结构
    诺基亚手机的安全保护。如何使你的手机丢失,被盗后依然安全。
    windows xp 同步故障:Unable to merge offline changes on \\ server_name \ share_name . The parameter is incorrect
    Google chart
    IPSEC的NAT兼容性
    Tom围棋(弈城围棋)运行错误:当前运行的版本是系统无法识别的版本
    IPSec NATT
  • 原文地址:https://www.cnblogs.com/javayida/p/13347035.html
Copyright © 2011-2022 走看看