返回顶部
首页 > 资讯 > 精选 >SpringBoot下Redis序列化乱码如何解决
  • 573
分享到

SpringBoot下Redis序列化乱码如何解决

2023-07-02 10:07:22 573人浏览 泡泡鱼
摘要

本篇内容主要讲解“SpringBoot下Redis序列化乱码如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springBoot下Redis序列化乱码如何解决”吧!SpringBoot下R

本篇内容主要讲解“SpringBootRedis序列化乱码如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习springBoot下Redis序列化乱码如何解决”吧!

SpringBoot下Redis序列化乱码

项目最初的序列化方案用的是jdk序列化类,但保存到redis里会产生乱码不方便查看管理。

public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {        redisTemplate.seTKEySerializer(new JdkSerializationRedisSerializer(Object.class.getClassLoader()));        redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer(Object.class.getClassLoader()));        redisTemplate.setHashKeySerializer(new JdkSerializationRedisSerializer(Object.class.getClassLoader()));        redisTemplate.setHashValueSerializer(new JdkSerializationRedisSerializer(Object.class.getClassLoader()));        this.redisTemplate = redisTemplate;    }

经过上网查看是由于序列化类的问题,我们不用jdk的序列化方法,采用JSON的格式

public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {        redisTemplate.setKeySerializer(new StringRedisSerializer());        redisTemplate.setValueSerializer(new GenericJackson2jsonRedisSerializer());        redisTemplate.setHashKeySerializer(new StringRedisSerializer());        redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());        this.redisTemplate = redisTemplate;    }

注意问题

采用上述序列化器时需保证实体类里的所有get方法都有属性字段,否则反序列话时会出现问题,若没有需要加@JsonIgnore注解,序列化时会进行忽略。

SpringBoot配置Redis序列化规则,防止乱码

SpringBoot引入Redis很简单,添加以下注解:

SpringBoot下Redis序列化乱码如何解决

然后在application.yml中添加Redis配置:

SpringBoot下Redis序列化乱码如何解决

注:此处有一些额外的配置,比如passWord等,我这里为省事就不写了。

下面我们可以编写测试类了

SpringBoot下Redis序列化乱码如何解决

测试后发现一个问题,test:1这样的key,乱码了。比如我用

Another.Redis.Desktop.Manager工具去查看时,发现变成了一串奇奇怪怪的字符串

乱码了。

这是因为Redis默认序列化规则导致的。RedisTemplate默认的所有序列化规则都是JDKSerializer,而StringRedisTemplate默认的序列化规则是StringRedisSerializer。

具体可以看下图

SpringBoot下Redis序列化乱码如何解决

SpringBoot下Redis序列化乱码如何解决

我们需要对它进行配置

package com.eknown.config; import com.fasterxml.jackson.annotation.JsonAutoDetect;import com.fasterxml.jackson.annotation.PropertyAccessor;import com.fasterxml.jackson.databind.ObjectMapper;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;import org.springframework.data.redis.serializer.StringRedisSerializer; @Configurationpublic class RedisConfig {      @Bean    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();        redisTemplate.setConnectionFactory(connectionFactory);         // 使用Jackson2JsonRedisSerialize替换默认序列化        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);         ObjectMapper objectMapper = new ObjectMapper();        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);         jackson2JsonRedisSerializer.setObjectMapper(objectMapper);         // 设置key和value的序列化规则        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);        redisTemplate.setKeySerializer(new StringRedisSerializer());        redisTemplate.afterPropertiesSet();         return redisTemplate;    }}

注:此处仅重新设置了Key和Value的序列化规则,hash-key和hash-value的序列化规则可以参考进行设置。

到此,相信大家对“SpringBoot下Redis序列化乱码如何解决”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: SpringBoot下Redis序列化乱码如何解决

本文链接: https://lsjlt.com/news/341188.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SpringBoot下Redis序列化乱码如何解决
    本篇内容主要讲解“SpringBoot下Redis序列化乱码如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot下Redis序列化乱码如何解决”吧!SpringBoot下R...
    99+
    2023-07-02
  • 解决SpringBoot下Redis序列化乱码的问题
    目录SpringBoot下Redis序列化乱码注意问题SpringBoot配置Redis序列化规则,防止乱码下面我们可以编写测试类了具体可以看下图我们需要对它进行配置SpringBo...
    99+
    2024-04-02
  • jquery序列化提交中文乱码如何解决
    这篇文章主要介绍“jquery序列化提交中文乱码如何解决”,在日常操作中,相信很多人在jquery序列化提交中文乱码如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”jquery序列化提交中文乱码如何解决...
    99+
    2023-07-05
  • Redis缓存-序列化对象存储乱码问题的解决
    使用Redis缓存对象会出现下图现象: 键值对都是乱码形式。 解决以上问题: 如果是xml配置的 我们直接注入官方给定的keySerializer,valueSerializer,...
    99+
    2024-04-02
  • springboot集成redis存对象乱码如何解决
    本篇内容主要讲解“springboot集成redis存对象乱码如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“springboot集成redis存对象乱码如何解决”吧!springboot...
    99+
    2023-07-02
  • redis反序列化报错如何解决
    这篇文章主要介绍“redis反序列化报错如何解决”,在日常操作中,相信很多人在redis反序列化报错如何解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”redis反序列化报错如何解决”的疑惑有所帮助!接下来...
    99+
    2023-07-05
  • SpringBoot 如何实现自定义Redis序列化
    目录问题环境入口点实现自定义序列化小结问题 在使用RedisTemplate存储对象时,如果采用JDK默认的序列化方式,数据会出现许多编码字符,辨析度不高。比如一个空的User对象,...
    99+
    2024-04-02
  • redis突然乱码如何解决
    Redis中出现乱码的情况可能有多种原因,下面是一些常见的解决方法:1. 检查Redis的字符编码设置:在Redis配置文件中,确保...
    99+
    2023-09-11
    redis
  • Redis key-value乱码如何解决
    这篇“Redis key-value乱码如何解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Redis ...
    99+
    2023-06-30
  • redis反序列化对象失败如何解决
    在Redis中存储的数据是经过序列化的,通常使用的是JSON、MessagePack等格式。如果反序列化对象失败,可能是因为序列化和...
    99+
    2024-04-09
    redis
  • redis控制台乱码如何解决
    要解决Redis控制台乱码的问题,可以尝试以下几种方法:1. 检查终端编码:确保终端编码与Redis服务器使用的字符集一致。可以使用...
    99+
    2023-09-01
    redis
  • Redis序列化转换类型报错如何解决
    本文小编为大家详细介绍“Redis序列化转换类型报错如何解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Redis序列化转换类型报错如何解决”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Cannot conv...
    99+
    2023-07-06
  • redis如何进行序列化
    redis如何进行序列化?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。序列化最终的目的是为了对象可以跨平台存储,和进行网络传输。而我们进行...
    99+
    2024-04-02
  • redis如何实现序列化
    redis实现序列化的示例:Redis提供了两个模板类RedisTemplate和StringRedisTemplate实现序列化,如:RedisAutoConfiguration源码,对key和value进行序列化:public clas...
    99+
    2024-04-02
  • 如何解决Springboot-application.properties中文乱码问题
    本篇内容主要讲解“如何解决Springboot-application.properties中文乱码问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何解决Springboot-applica...
    99+
    2023-06-21
  • SpringBoot之Json的序列化和反序列化问题怎么解决
    这篇文章主要讲解了“SpringBoot之Json的序列化和反序列化问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot之Json的序列化和反序列化问题怎么解决”吧...
    99+
    2023-07-02
  • redis序列化key丟失怎么解决
    如果发生了Redis序列化key丢失的情况,可以尝试以下解决方法: 检查Redis配置文件中是否开启了RDB持久化或AOF持久化...
    99+
    2024-04-09
    redis
  • 如何解决Ubuntu下Navicat乱码问题
    这篇文章主要介绍了如何解决Ubuntu下Navicat乱码问题,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。ubuntu下navicat的乱码大...
    99+
    2024-04-02
  • SpringBoot结合Redis实现序列化的方法详解
    目录前言配置类配置 Jackson2JsonRedisSerializer 序列化策略配置  RedisTemplate配置缓存策略测试代码完整代码前言 最近在学...
    99+
    2024-04-02
  • SpringBoot自定义Redis实现缓存序列化详解
    目录1、自定义RedisTemplate1.1、Redis API默认序列化机制1.2、自定义RedisTemplate序列化机制1.3、效果测试2、自定义RedisCacheMan...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作