账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    springboot 中使用redis序列化问题
    25
    0
    问题:在对redisTemplate 的配置中使用 JdkSerializationRedisSerializer 序列化方式,和使用 Jackson2JsonRedisSerializer序列化方式遇到问题redis客户端使用 redis Simple 插件jdk 序列化方式,对象能够正常存入取出,但是使用reids客户端查看的数据为乱码redisTemplate配置 @Bean public RedisTemplate<String,Object> redisTemplate() { RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>(); //TODO 设置redis 连接工厂 redisTemplate.setConnectionFactory(redisConnectionFactory); //TODO 指定key 序列化策略为String 序列哈,value 为jdk 自带序列化 redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer()); //修改redis的序列化策略;// redisTemplate.setDefaultSerializer(new Jackson2JsonRedisSerializer<Object>(Object.class)); // TODO 指定hashKey 序列化策略为String 序列化-针对hash散列存储 redisTemplate.setHashKeySerializer(new StringRedisSerializer());// redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<Object>(Object.class)); return redisTemplate; }redis客户端向map中存入值 private boolean storeSingleHash(String key, String hkey,College value) { try { redisTemplate.opsForHash().put(key,hkey,value); return true; } catch (Exception e) { log.warn("hput {} ={}",key+key,value); } return false; }取出 for (Object element : set) { College college = (College) redisTemplate.opsForHash().get(hashKey, element); result.add(college); }jackson 序列化方式 redis客户端能够正常看到非乱码数据,但是向hash中放入一个对象,取出来就变成了linkeMap ,出现了类型转换异常客户端redisTeamplate配置 @Bean public RedisTemplate<String,Object> redisTemplate() { RedisTemplate<String,Object> redisTemplate = new RedisTemplate<>(); //TODO 设置redis 连接工厂 redisTemplate.setConnectionFactory(redisConnectionFactory); //TODO 指定key 序列化策略为String 序列哈,value 为jdk 自带序列化 redisTemplate.setKeySerializer(new StringRedisSerializer());// redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer()); //修改redis的序列化策略; redisTemplate.setDefaultSerializer(new Jackson2JsonRedisSerializer<Object>(Object.class)); // TODO 指定hashKey 序列化策略为String 序列化-针对hash散列存储 redisTemplate.setHashKeySerializer(new StringRedisSerializer());// redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer<Object>(Object.class)); return redisTemplate; }向map中存入值 private boolean storeSingleHash(String key, String hkey,College value) { try { redisTemplate.opsForHash().put(key,hkey,value); return true; } catch (Exception e) { log.warn("hput {} ={}",key+key,value); } return false; }取出 for (Object element : set) { College college = (College) redisTemplate.opsForHash().get(hashKey, element); result.add(college); }异常java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to edu.dlu.bysj.base.model.entity.College请问这是什么原因造成的是我的redis配置不正确吗? 使用jdk的序列化方式我没法很好的看到redis中值得变化,使用jackson的序列化方式,取值感觉又不太正确,请问我该如何解决这个问题
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 一骑轻尘 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部