Redis序列化转换类型报错的解决

Cannot convert value of type 'org.springframework.data.redis.core.convert.MappingRedisConverter' to required type 'org.springframework.data.redis.core.mapping.RedisMappingContext': no matching editors or conversion strategy found

在setValue的序列化方式的时候报错,原来是用的RedisSerializer.json()方法,但是报错,

template.setConnectionFactory(factory);
        // key序列化方式
        template.setKeySerializer(RedisSerializer.string());
        // value序列化方式
        template.setValueSerializer(RedisSerializer.json());
        // hash key的序列化方式
        template.setHashKeySerializer(RedisSerializer.string());
        // hash value的序列化方式
        template.setHashValueSerializer(RedisSerializer.json());

改成如下即可解决:

template.setConnectionFactory(factory);
        // key序列化方式
        template.setKeySerializer(RedisSerializer.string());
        // value序列化方式
        template.setValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));
        // hash key的序列化方式
        template.setHashKeySerializer(RedisSerializer.string());
        // hash value的序列化方式
        template.setHashValueSerializer(new Jackson2JsonRedisSerializer<>(Object.class));

在Redis中,有多种序列化实现可供选择。其中,Jackson2JsonRedisSerializer和RedisSerializer.json()都是Redis中的序列化实现。它们的区别如下:

Jackson2JsonRedisSerializer使用Jackson库将Java对象序列化为JSON格式的字符串,并将其存储到Redis中。它还可以将从Redis中读取的JSON字符串反序列化为Java对象。因此,使用Jackson2JsonRedisSerializer可以方便地处理JSON格式的数据,并且对于复杂的Java对象可以进行较好的序列化和反序列化。但是,它可能会在序列化过程中忽略一些Java对象中的字段,因此需要进行一些配置才能完全控制序列化过程。

RedisSerializer.json()使用Redis的内置JSON序列化器,将Java对象序列化为JSON格式的字符串,并将其存储到Redis中。它也可以将从Redis中读取的JSON字符串反序列化为Java对象。与Jackson2JsonRedisSerializer相比,RedisSerializer.json()在序列化过程中会将所有Java对象中的字段都序列化到Redis中,但在处理复杂Java对象时,可能需要进行一些额外的配置。

因此,选择哪种序列化方式取决于使用场景和具体需求。如果需要处理复杂的Java对象,并且对序列化和反序列化的精细控制比较关键,那么Jackson2JsonRedisSerializer是一个更好的选择。而如果处理的数据较为简单,或者只需要简单地将Java对象转换为JSON格式的字符串进行存储,那么RedisSerializer.json()可能更适合。

到此这篇关于Redis序列化转换类型报错的解决的文章就介绍到这了,更多相关Redis序列化转换类型内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot结合Redis实现序列化的方法详解

    目录 前言 配置类 配置 Jackson2JsonRedisSerializer 序列化策略 配置  RedisTemplate 配置缓存策略 测试代码 完整代码 前言 最近在学习Spring Boot结合Redis时看了一些网上的教程,发现这些教程要么比较老,要么不知道从哪抄得,运行起来有问题.这里分享一下我最新学到的写法 默认情况下,Spring 为我们提供了一个 RedisTemplate 来进行对 Redis 的操作,但是 RedisTemplate 默认配置的是使用Java本机序列化.

  • Redis之RedisTemplate配置方式(序列和反序列化)

    RedisTemplate配置 序列和反序列化 对于redis操作,springboot进行了很好的封装,那就是spring data redis.提供了一个高度封装的RedisTemplate类来进行一系列redis操作,连接池自动管理:同时将事务封装操作,交由容器进行处理. 针对数据的“序列化和反序列化”,提供了多种策略(RedisSerializer) 默认为使用JdkSerializationRedisSerializer,同时还有StringRedisSerializer,Jackso

  • redis序列化及各种序列化情况划分

    目录 序列化基本 序列化各种情况区分 情况一:类没有序列化,直接存储一个javabean对象 结果:报错 情况二:类序列化,直接存储一个javebean对象 结果:控制台正常显示,黑窗口乱码 情况三 使用jackon序列化(自定义的序列化) 内容正常输出. 情况四 正常使用时,我们通常把我们的对象转换成json存储,并不会直接存储某一个java对象. 序列化基本 默认使用的是jdk序列化 会使字符串转义 在实际开发中,当我们要往redis中存对象时,都要进行序列化的. 当然,如果我们把对象给转换

  • 关于redisson缓存序列化几枚大坑说明

    redisson缓存序列化几枚坑 1.返回值为Map<T, K> 的方法增加@Cacheable后,T和K被类型擦出了,为啥? redisson结合Spring使用时,会有RedissonSpringCacheManager,将redissonClient自动注入,另外还有codec的概念,即序列化和反序列化,可以查看实现类,就几种实现,假设我们使用org.redisson.codec.JsonJacksonCodec,可以看到,decode中,仅一个Object.class,即范型信息并未带

  • Redis序列化存储及日期格式的问题处理

    目录 Redis序列化存储及日期格式 可视化界面看到保存的数据是这样的 这时候就需要我们自定义序列化方式 Redis序列化LocalDateTime报错 方案一:实体类日期字段添加注解 方案二:设置Redis对日期序列化处理 Redis序列化存储及日期格式 在模块开发中,使用Redis做缓存是非常常见的技术,当我们注入RedisTempate模板时 redisTemplate.opsForValue().set("item_"+id,itemModel,10, TimeUnit.MIN

  • 解决SpringBoot下Redis序列化乱码的问题

    目录 SpringBoot下Redis序列化乱码 注意问题 SpringBoot配置Redis序列化规则,防止乱码 下面我们可以编写测试类了 具体可以看下图 我们需要对它进行配置 SpringBoot下Redis序列化乱码 项目最初的序列化方案用的是JDK序列化类,但保存到redis里会产生乱码不方便查看管理. public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {         redisTem

  • redis反序列化报错原因分析以及解决方案

    目录 redis反序列化报错原因分析 序列化id’不一致 实体类属性不一致 redis序列化转换类型报错 总结 redis反序列化报错原因分析 问题:Cannot deserialize,无法反序列化 分析: 序列化id’不一致 1.实体类实现了序列化接口后,没有指定序列化id. 2.读和写的class版本不一致,srpingboot jar包版本不一致的两个class文件,序列化id不一致.因为我们项目是几个系统对接,共享的一个redis库. 实体类属性不一致 可能存到redis的时候是两个属

  • Redis序列化转换类型报错的解决

    Cannot convert value of type 'org.springframework.data.redis.core.convert.MappingRedisConverter' to required type 'org.springframework.data.redis.core.mapping.RedisMappingContext': no matching editors or conversion strategy found 在setValue的序列化方式的时候报错

  • Mybatis返回int或者Integer类型报错的解决办法

    会报错如下: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.apache.ibatis.binding.BindingException: Mapper method 'com.bill.springMybatis.dao.UserDao.getUserIdByName attempted to return null from a m

  • 解决fastjson泛型转换报错的解决方法

    错误信息 Exception in thread "main" java.lang.ClassCastException: com.alibaba.fastjson.JSONObject cannot be cast to com.xh.demo.UserDO 泛性类 @Data public class ResultSetDTO<T> { private Integer totalSize; private Integer count; private List<T

  • Vue3发送post请求出现400 Bad Request报错的解决办法

    查了一下网上资料,报400一般无非就是两种: 1. Bad Request:“错误的请求" 2. Invalid Hostname:"不存在的域名” 在这里我的报错是因为前端请求头的content-type和后端不一致. 一般后端默认的内容类型是 application/x-www-form-urlencoded,而axios默认的是 applecation/json. 但是也有例外,要根据后端的注解来区分我们要转换的类型. 根据上一篇笔记上说的: @RequestBody 用 con

  • Mybatis 查询语句条件为枚举类型时报错的解决

    目录 Mybatis查询语句条件为枚举类型报错 通常这个错误是 Mybatis处理枚举类型 1.枚举 2.包含枚举的实体类 3.书写枚举处理器 4.配置枚举处理器 5.dao层 6.mapper文件 7.测试 Mybatis查询语句条件为枚举类型报错 通常我们对于数据库中一些枚举字段使用tinyInt类型,而java对象对应的字段很多时候会为了方便定义成short或者int.但这样显然不美观方便,让后面维护的人抠破脑袋找你的常量定义在哪儿,要是没有注释简直让人崩溃.时间久后,没有人知道这里面的值

  • 新手常见6种的python报错及解决方法

    此篇文章整理新手编写代码常见的一些错误,有些错误是粗心的错误,但对于新手而已,会折腾很长时间才搞定,所以在此总结下我遇到的一些问题.希望帮助到刚入门的朋友们. 1.NameError变量名错误 报错: >>> print a Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' is not defined 解决方案:

  • bootstrap+jquery项目引入文件报错的解决方法

    做一个项目的时候 ,控制台总是会出现各种bug,其实不用慌张,终结起来也就几种类型的错误,在开发中每次遇到错误都善于总结,下次在看到就会胸有成竹知道是什么情况了,以下是在开发过程中总结的一些错误以及错误的解决方法. 报错一:Uncaught ReferenceError: $ is not defined Uncaught ReferenceError: $ is not defined Uncaught ReferenceError: jQuery is not defined 错误原因:文件

  • vue使用prop可以渲染但是打印台报错的解决方式

    vue属性传递时有时会报下述错误 vue.esm.js?f959:610 [Vue warn]: Error in render: "TypeError: Cannot read property 'RegistrationAuthority' of undefined" found in ---> <DialogHistory> at src/components/tools/dialog_history.vue <NurseInfor> at src/

  • mybatis-plus3.4.0逻辑删除报错的解决

    特别注意!!! 无论数据库字段,实体类字段,还是平时取其它字段名字时候,或者方法这些名字,一定不能和关键字重名,因为这样可能出现一些让人无法看出的错误 在进行mybatis-plus逻辑删除字段时候,我在数据库定义了delete字段定义为int类型,默认值是0,然后又在实体类中定义了这个字段delete并且在实体类的这个字段上面添加了注解@TableLogic,并且在application.properties中开启.(我使用的是3.4.0) 根据官方文档,在3.4.0版本中只需要以上两个步骤即

  • mysql导入csv的4种报错的解决方法

    以此悼念我今天踩过的4个坑-- 坑一:local的错 报错: ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides 修正:去掉local mysql> load data infile -- 坑二:csv地址错 报错: ERROR 1290 (HY000): The MySQL server is running with the -

随机推荐