一、在单个应用内进行 存 取

工作中的问题场景

将一个实体类对象set存入 redis中, 用的时候去get时,

报错提示:......SerializationException: Could not read JSON: Could not resolve type.......

明明实体类也实现 序列化接口了;

问题原因

查看类中是否有除了get,set以外的其他方法,如果是注解开发,那就看看是不是有除了@Data以外的其他注解(如:@AllArgsConstructor 、@NoArgsConstructor);

在序列化时,只要类中方法有返回值,都会被序列化存入缓存中,存入时不会报错,

但是从缓存中取值时反序列化就会报错,因为除了对象属性字段有set方法,其他那些方法被序列号存入的值是没有set方法的

解决方案:

1、 设置redis反序列化时忽略未知属性

@Beanpublic RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);ObjectMapper objectMapper = new ObjectMapper();objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);// 此设置默认为true,就是在反序列化遇到未知属性时抛异常,这里设置为false,目的为忽略部分序列化对象存入缓存时误存的其他方法的返回值objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);jackson2JsonRedisSerializer.setObjectMapper(objectMapper);// 配置redisTemplateRedisTemplate<String, Object> rtp = new RedisTemplate<String, Object>();rtp.setConnectionFactory(lettuceConnectionFactory);RedisSerializer<?> stringSerializer = new StringRedisSerializer();// key序列化rtp.setKeySerializer(stringSerializer);// value序列化rtp.setValueSerializer(jackson2JsonRedisSerializer);// Hash key序列化rtp.setHashKeySerializer(stringSerializer);// Hash value序列化rtp.setHashValueSerializer(jackson2JsonRedisSerializer);rtp.afterPropertiesSet();return rtp;}

2、在实体类中只加 @Data注解,去掉其他会生成方法的注解或者去掉其他方法

二、多个应用交互,一个内进行 存,另一个进行 取

redis的默认通过io序列化和反序列化,

bug:当存取为vaule为实体类对象时,你发现抛标题里的异常了

原因:redis的默认通过io序列化和反序列化,于是给redis里存值时一切正常,但是另一个应用里去取值时,就会根据缓存里的类路径找寻对应的实体类进行反序列化,取得应用里当然不存在相同路径以及这个实体类,于是反序列化失败;

解决方案:

首先,这个bug属于  存  的一方的错误哦,

方法1:在redis全局配置那里配置redis的序列化和反序列化工具为fastjson这类工具,这个一搜有很多;

方法2:往redis里存的时候将实体类对象转json后再存,然后取时这样去取:

RecordBasicInfo basicInfo = JSON.parseObject(String.valueOf(info), RecordBasicInfo.class);

这里注意,转info为字符串时不要用转json工具,因为存的那一方已经转过了

redis获取缓存对象bean时报:SerializationException: Could not read JSON: Could not resolve type相关推荐

  1. Java的List和Json转换以及StringRedisTemplate往redis存泛型对象

    List转Json List<User> user= new ArrayList(); String str = JSON.toJSONString(user); Json 转List方法 ...

  2. MyBatiesPlus+Redis分布式缓存

    一.开启二级缓存 cache-enabled: true # mybatis-plus相关配置 mybatis-plus:# xml扫描,多个目录用逗号或者分号分隔(告诉 Mapper 所对应的 XM ...

  3. Redis缓存对象相关

    1.想要使用redis先获得连接池对象,及JedisPool 然后在配置生成连接池对象需要的参数咯 (1)你可以写一个参数实体类,再写一个bean注入到spring @Component @Confi ...

  4. JAVA中创建的redis对象_详解Java在redis中进行对象的缓存

    java在redis中进行对象的缓存一般有两种方法,这里介绍序列化的方法,个人感觉比较方便,不需要转来转去. 一.首先,在存储的对象上实现序列化的接口 package com.cy.example.e ...

  5. 获取对象的key_玩转 SpringBoot2.x 之缓存对象

    作者 | 桌前明月 来源 | CSDN博客 头图 | 付费下载自视觉中国 出品 | CSDN(ID:CSDNnews) 前言 提到Redis 大部分的人首先想到的可能就是缓存,那么在 Java 项目中 ...

  6. Spring源码 - 从缓存中获取单例Bean

    # Spring源码 - 从缓存中获取单例Bean Spring版本:Spring 5.3.13-release # 1.从缓存中获取单例Bean 单实例Bean在Spring的同一个容器中只会创建一 ...

  7. 利用python获取指定url在ATS中缓存对象的信息

    业务需求 给定url,如何查询指定的ATS中是否有该url的缓存对象信息?如果缓存了的话,希望提供该缓存对象的大小,缓存时间,缓存文件名,缓存份数(document alternative)等等信息 ...

  8. java 获取spring对象数组_解析Java中如何获取Spring中配置的bean

    解析Java中如何获取Spring中配置的bean Java中如何获取Spring中配置的bean?下面是由百分网小编为大家整理的解析Java中如何获取Spring中配置的bean,喜欢的可以收藏一下 ...

  9. java用redis缓存的步骤_详解在Java程序中运用Redis缓存对象的方法|chu

    这段时间一直有人问如何在Redis中缓存Java中的List 集合数据,其实很简单,常用的方式有两种: 1. 利用序列化,把对象序列化成二进制格式,Redis 提供了 相关API方法存储二进制,取数据 ...

最新文章

  1. android帧动画实现方法之一
  2. go 用的不多的命令
  3. (PHP7内核剖析-3) 变量
  4. ubuntu下php服务器搭建_Ubuntu服务器下搭建php运行环境的方法
  5. nod32用户名和密码每天更新_忘记登录密码没有U盘怎么办?无U盘重置密码Win7篇
  6. Bug接口地址找不到
  7. BAL数据集与BA优化
  8. java代码审计文件包含_代码审计--一道简单的文件包含题目的多种利用方式
  9. tuxedo 强制重启
  10. 离散数学及其应用第1章笔记总结
  11. Hi3516d平台的usb功能调试记录
  12. 录入姓名完成座位表,学习前端的小伙伴可以关注一波,用js+html+css构成
  13. C语言文本文档汉字乱码处理问题
  14. linux bsd格式,Linux系统日志管理_Linux/BSD系统
  15. java 取上界_Java中的上界通配符 - java
  16. JZM 的印象笔记 (卷积,分块)
  17. 7s巡检管理系统是什么_基于微信的巡检系统7S巡检管理系统
  18. bal插口_中国银行银企对接接口格式(企业接口).doc
  19. QQ登录界面测试用例
  20. 购物网站系统设计与实现

热门文章

  1. ICIP2020:VVC帧内编码复杂度分析
  2. EditPlus 设置关闭后不打开未关闭的文件,以及设置在同一个窗口打开多个文件
  3. 秘制牛肉Alpha阶段项目展示
  4. 时间日期格式化(xxx之前)
  5. 约瑟夫问题与魔术(九)——魔术《五重巧合之皇家同花顺》
  6. 《Design Patterns Explained》读书笔记
  7. 推荐 10 个不错的网络监视工具
  8. macOS下长截图的两种方法
  9. 【Python实战】中国首份姓名报告出炉!中国爸妈给孩子取什么名?点开前你先猜一下……
  10. HDOJ中的a+b问题汇总