解决Redis序列化乱码问题

如果我们使用原生的JDK序列化,那么当我们将数据存储到Redis中就会出现乱码的情况

为了解决这个问题我们需要重写RedisTemplate从而解决序列化乱码问题

首先在Maven中引入相应的依赖

        <dependency>       <groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.12.7</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.12.7</version></dependency>
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.DeserializationFeature;
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.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();RedisSerializer<String> redisSerializer = new StringRedisSerializer();redisTemplate.setConnectionFactory(redisConnectionFactory);redisTemplate.setKeySerializer(redisSerializer);redisTemplate.setHashKeySerializer(redisSerializer);redisTemplate.setValueSerializer(jackson2JsonRedisSerializer());redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer());return redisTemplate;}private Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer() {Jackson2JsonRedisSerializer<Object> jsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);ObjectMapper objectMapper = new ObjectMapper();objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);jsonRedisSerializer.setObjectMapper(objectMapper);return jsonRedisSerializer;}}
添加完这个配置类以后再使用RedisTemplate将数据序列化到Redis中就不会出现乱码的情况了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/593616.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

七、Redis 缓存 —— 超详细操作演示!

七、Redis 缓存 —— 超详细操作演示&#xff01; 七、Redis 缓存7.1 Jedis 客户端7.1.1 Jedis 简介7.1.2 创建工程7.1.3 使用 Jedis 实例7.1.4 使用 JedisPool7.1.5 使用 JedisPooled7.1.6 连接 Sentinel 高可用集群7.1.7 连接分布式系统7.1.8 操作事务 7.2 金融产品交易平台7…

Python怎么修改进程名称

目录 一、进程名称的概念 二、Python修改进程名称的方法 三、代码示例与使用说明 四、注意事项 五、适用场景 六、总结 Python是一种强大的编程语言&#xff0c;广泛应用于各种应用程序的开发。在Python中&#xff0c;修改进程名称可以通过多种方式实现。下面我们将深入探…

StringBad ditto (motto)

第12章 类和动态内存分配 StringBad ditto (motto): // calls StringBad (comst StringBad &) StringBad metoo - motto: // calls StringBad (const StringBad &) StringBad also StringBad (motto): // calls StringBad (const StringBad &) StringBad * pStri…

python c语言 代码动态检查,python c语言语法分析

大家好&#xff0c;小编来为大家解答以下问题&#xff0c;python c语言 代码动态检查&#xff0c;python c语言语法分析&#xff0c;今天让我们一起来看看吧&#xff01; Source code download: 本文相关源码 初学编程&#xff0c;应该学习哪一门编程语言&#xff0c;有不少人感…

项目经理面试10问

今天我们来说说项目经理专业面试的十条经验总结。如果你认真阅读并思考&#xff0c;相信对在屏幕前的你会有所帮助和启发。 1、请做一下自我介绍 自我介绍很重要。无论面试什么岗位&#xff0c;面试官通常都会问你一个最常见的问题&#xff1a;“请做一下自我介绍。” 在准备…

机器学习的算法简单介绍-随机森林算法

随机森林 随机森林目前在学习的过程中&#xff0c;并未使用到&#xff0c;因此&#xff0c;仅仅简单的介绍一下相应的概念和应用的方面&#xff0c;等后续学习的过程中使用到&#xff0c;会继续进行补充。 随机森林&#xff08;Random Forest&#xff09;可以看作是一种集成学…

C语言——格式说明符前面加修饰符

在C语言中&#xff0c;格式说明符前面可以添加一些修饰符来控制输出或输入的格式&#xff0c;主要包括宽度、精度、左对齐标志和前缀填充字符等。 1. 宽度&#xff08;Width&#xff09; %[width]type&#xff1a;这里的width是一个非负整数&#xff0c;表示输出字段的最小宽度…

java 属性复制为空属性不复制

工具类 package com.jiayou.peis.common.core.util;import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanWrapper; import org.springframework.beans.BeanWrapperImpl;import java.util.HashSet; import java.util.Set;/*** 自定义属性复制*/…

Vue 生命周期有哪些?作用是什么?

什么是vue的生命周期 Vue 实例从开始创建、初始化数据、编译模板、挂载Dom和渲染、更新和渲染、卸载等一系列过程&#xff0c;这是 Vue 的生命周期 vue的生命周期的八个钩子函数 beforeCreat() 创建前 在new一个vue实例后&#xff0c;只有一些默认的生命周期钩子和默认事件&a…

Unity坦克大战开发全流程——开始场景——开始界面

开始场景——开始界面 step1&#xff1a;设置UI 反正按照这张图拼就行了 step2&#xff1a;写脚本 前面的拼UI都是些比较机械化的工作&#xff0c;直到这里写代码的时候才真正开始有点意思了&#xff0c;从这里开始&#xff0c;我们就要利用面向对象的思路来进行分析&#xff1…

虾皮跨境电商选品有哪些规则

如何在虾皮&#xff08;Shopee&#xff09;平台上进行跨境电商选品在如今全球化的商业环境中&#xff0c;跨境电商已成为许多卖家拓展业务的重要途径。虾皮&#xff08;Shopee&#xff09;作为一家知名的跨境电商平台&#xff0c;为卖家提供了丰富的销售机会。然而&#xff0c;…

【C++核心编程(二)】

一、类和对象 C面向对象的三大特性为:封装、继承、多态。 C认为万事万物都皆为对象&#xff0c;对象上有其属性和行为。 例如: 人可以作为对象&#xff0c;属性有姓名、年龄、身高、体重...&#xff0c;行为有走、跑、跳、吃饭、唱歌... 车也可以作为对象&#xff0c;属性…

HTML中的主根元素、文档元数据、分区根元素、内容分区、文本内容 和 内联文本语义

本文主要介绍了HTML中主根元素<html>、文档元数据<base>、<head>、<link>、<meta>、<style>、<title>、分区根元素<body>、内容分区<address>、<article>、<aside>、<footer>、<h1> (en-US), &…

3dmax全景图用什么渲染 全景图云渲染使用教程

在给客户展示设计概念时&#xff0c;应用3ds Max创建的全景图是一个高效直观的方法。这种方式不仅可以全方位地呈现整个空间&#xff0c;让客户沉浸式地感受设计师的创意&#xff0c;而且在展现大型空间设计&#xff0c;如展览馆或者会议室等&#xff0c;效果尤其显著&#xff…

在mac上怎么方便的编辑xml文件

在Mac上 XML 文件不能默认以较直观的方式在“文本编辑”中打开&#xff0c;如果已安装 Xcode&#xff0c;你可以使用 Xcode 打开 XML 文件。在 Xcode 中&#xff0c;XML 文件通常会以可视化的方式显示&#xff0c;使得编辑更加直观&#xff0c;但是如果你不想安装 XCode&#x…

Win10 开机突然时出现0xc000014c错误怎么办?

环境&#xff1a; Win10 专业版 问题描述&#xff1a; Win10 开机突然时出现0xc000014c错误怎么办&#xff1f; 尝试F8模式也进不了还是这个画面 文件&#xff1a;\Windows\System32\config\system 状态&#xff1a;0xc000014c 信息&#xff1a;无法加载操作系统&#xff…

摆烂式学习ssh

摆烂式学习ssh ssh工作原理ssh基本使用sshd配置文件密钥登录1.客户端2.服务器3.注意事项4.使用密钥登录测试 ssh高级使用技巧1.在非正规端口启动2.rsync 命令3.透过 ssh 通道加密原本无加密的服务4.以ssh信道配合x server 传递图形接口5.ssh配合virtualbox虚拟机使用技巧 ssh工…

Python高级用法:装饰器(decorator)

装饰器&#xff08;decorator&#xff09; Python装饰器的作用是使函数包装与方法包装&#xff08;一个函数&#xff0c;接受函数并返回其增强函数&#xff09;变得更容易阅读和理解。最初的使用场景是在方法定义的开头能够将其定义为类方法或静态方法。 不使用装饰器的代码如…

杨中科.NET Core 教程 第一部分-2- .NET Core的重要问题

.NETCore 和 .NETFramework区别 尽管绝大部分用法都没变&#xff0c;但是.NET Core不是 .NET Framework的升级版&#xff0c;无法直接升级 用Mono&#xff0c;.NET Framework程序可以直接运行在Linux下。有了Mono&#xff0c;为啥微软还搞.NET Core? .NET Framework缺点&am…

主干网络篇 | YOLOv8 更换骨干网络之 ResNet50/ResNet101 | 原论文一比一复现

论文地址:https://arxiv.org/abs/1512.03385v1 更深层的神经网络更难以训练。我们提出了一个残差学习框架,以便于训练比以往使用的网络更深层的网络。我们明确地将层重构为学习相对于层输入的残差函数,而不是学习无参考的函数。我们提供了全面的实证证据,表明这些残差网络…