【 Redis】的乱码问题

news2024/9/23 21:30:04

问题描述:

使用RedisTemplate存储的数据,在 redis-cli 客户端查看时,key 和 value 都会携带类似\xac\xad\这样的字符串。

原因:

由于默认使用了 jdk 的序列化方式。以下是支持的序列化方式

项目一般都会有缓存,常常使用redis来存取缓存(现在已不推荐使用session存储缓存),我们的键(key)和值(value)都是通过Spring提供的Serializer序列化到数据库的。RedisTemplate默认使用的是JdkSerializationRedisSerializer,StringRedisTemplate默认使用的是StringRedisSerializer。

在这里插入图片描述

解决方法:

在系统启动完后,初始化缓存序列化器。 将redisTemplate默认使用JdkSerializationRedisSerializer序列化 改为 stringRedis序列化方式。

在这里插入图片描述

key和value都使用String序列化:

在这里插入图片描述

注:

1. ApplicationRunner接口可以实现springboot应用启动后做一些初始化操作

2. 为什么使用Serializer

因为redis是以key-value的形式将数据存在内存中,key就是简单的string,key似乎没有长度限制,不过原则上应该尽可能的短小且可读性强,无论是否基于持久存储,key在服务的整个生命周期中都会在内存中,因此减小key的尺寸可以有效的节约内存,同时也能优化key检索的效率。
   value在redis中,存储层面仍然基于string,在逻辑层面,可以是string/set/list/map,不过redis为了性能考虑,使用不同的“encoding”数据结构类型来表示它们。(例如:linkedlist,ziplist等)。
   所以可以理解为,其实redis在存储数据时,都把数据转化成了byte[]数组的形式,那么在存取数据时,需要将数据格式进行转化,那么就要用到序列化和反序列化了,这也就是为什么需要配置Serializer的原因。

参考链接:https://blog.csdn.net/u010096624/article/details/109046714
源码追溯:https://blog.csdn.net/qq_16159433/article/details/121491555
多方法实现:https://blog.csdn.net/m4330187/article/details/108091447

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

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

相关文章

Python人工智能在气象中怎样应用?

Python是功能强大、免费、开源,实现面向对象的编程语言,在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能,这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…

软件安全测试和渗透测试的区别在哪?安全测试报告有什么作用?

软件安全测试和渗透测试在软件开发过程中扮演着不同的角色,同时也有不同的特点和目标。了解这些区别对于软件开发和测试人员来说非常重要。本文将介绍软件安全测试和渗透测试的区别,以及安全测试报告在软件开发和测试过程中的作用。 一、 软件安全测试和…

【《概率图模型原理与应用:第2版》——概率机器学习与人工智能可解释性领域不可多得的著作】

《概率图模型原理与应用:第2版》反映了PGM的理论基础与进展。取材精炼,层次分明,是一-本很好的关于PGM的专业书籍。同时结合了大量的案例分析与代码算例,使得初学者能快速掌握前沿的PGM理论。本书的翻译与出版能进一步推进国内 人工智能算法领…

Vue3 element-plus表单嵌套表格实现动态表单验证

Vue3结合element-plus表单项可以动态添加/删除 部分效果图如下: 另表格有添加和删除按钮,点击提交进行表单验证。 首先data格式必须是对象包裹数组 import { ref, reactive } from vue; import { FormInstance } from element-plus const froms re…

盘点16个.Net开源项目

今天一起盘点下,16个.Net开源项目,有博客、商城、WPF和WinForm控件、企业框架等。(点击标题,查看详情) 一、一套包含16个开源WPF组件的套件 项目简介 这是基于WPF开发的,为开发人员提供了一组方便使用自…

华为云hcip核心知识笔记(数据库服务规划)

华为云hcip核心知识笔记(数据库服务规划) 1.云数据接库优势 1.1云数据库优点有: 易用性强:能欧快速部署和运行 高扩展:开放式架构和云计算存储分离 低成本:按需使用,成本更加低廉 2.云数据库r…

nmake编译Qt第三方库出现无法打开包含文件type_traits

最近需要为个人项目ShaderLab添加内嵌的代码编辑窗口功能,支持语法高亮和Intellisense,最初使用了QCodeEditor,发现这个第三方的库对词法分析的实现效果不太行. 代码换行后直接缩进到首行,无法定位到前一句的首行 考虑换QScintilla&#xff…

java对象、数组作为函数的入参和出参

在Java编程中,将对象或者数组作为方法的入参传递,可以在方法中修改对象或者数组的值,回传给调用者,这样入参又承担了出参的角色。 代码示例: 定义一个类: package com.thb;public class Point {private i…

深入解析项目管理中的用户流程图

介绍用户流程图 用户流程图的定义 用户流程图(User Flow Diagram)是一种可视化工具,它描绘了用户在应用或网站上完成任务的过程。这些任务可以是购物、注册账户、查找信息等,任何需要用户交互的动作都可以在用户流程图中找到。 用户流程图的重要性 用…

9.索引签名类型,映射类型,索引查询类型

目录 1 索引签名类型 1.1 对象 1.2 数组 2 映射类型 2.1 映射联合类型 2.2 映射类型无法在接口中使用 2.3 映射对象类型 2.4 泛型工具类型都是基于映射类型实现的 3 索引查询类型 3.1 基本使用 3.2 索引查询多个相当于联合类型 1 索引签名类型 1.1 对…

07. Docker网络通信模式

目录 1、前言 2、基本原理 3、Docker网络配置 3.1、查看网络配置 3.2、4种网络模式 3.3、bridge模式 3.3.1、使用bridge网络 3.3.2、自定义bridge网络 3.4、host模式 3.5、container模式 3.6、none模式 4、小结 1、前言 前面我们介绍了Docker容器的相关内容&#…

刷题学算法

刷题学算法 数据结构 一、数组 1. 数组创建: // 方式1:先创建,再逐个存储元素 String[] cityArray1 new String[5]; cityArray1[0] "北京"; cityArray1[1] "上海"; cityArray1[2] "广州"; cityArray1[3…

Metric3D:Towards Zero-shot Metric 3D Prediction from A Single Image

参考代码:Metric3D 介绍 在如MiDas、LeReS这些文章中对于来源不同的深度数据集使用归一化深度作为学习目标,则在网络学习的过程中就天然失去了对真实深度和物体尺寸的度量能力。而这篇文章比较明确地指出了影响深度估计尺度变化大的因素就是焦距 f f f…

【Docker】Docker安装Kibana服务_Docker+Elasticsearch+Kibana

文章目录 1. 什么是Kibana2. Docker安装Kibana2.1. 前提2.2. 安装Kibana 点击跳转:Docker安装MySQL、Redis、RabbitMQ、Elasticsearch、Nacos等常见服务全套(质量有保证,内容详情) 1. 什么是Kibana Kibana 是一款适用于Elasticse…

Qt之进程通信-共享内存(含源码+注释)

文章目录 一、内存共享示例图读取文本读取图片 二、界面操作共享内存示例图文本读取示例图图片读取示例图弹窗示例图 二、个人理解与一些心得三、源码简易内存共享Demo创建者接收者 界面共享内存Demo创建者读取者 总结 一、内存共享示例图 读取文本 下图是读取文本的操作&…

TCP的三次握手以及四次断开

TCP的三次握手和四次断开,就是TCP通信建立连接以及断开的过程 目录 【1】TCP的三次握手过程 ---- TCP建立连接的过程 【2】TCP的四次挥手 ---- TCP会话的断开 注意: 【1】TCP的三次握手过程 ---- TCP建立连接的过程 三次握手的过程&#xff1a…

1.初识typescript

在很多地方的示例代码中使用的都是ts而不是js,为了使用那些示例,学习ts还是有必要的 JS有的TS都有,JS与TS的关系很像css与less ts在运行前需要先编译为js,浏览器不能直接运行ts 目录 1 编译TS的工具包 1.1 安装 1.2 基本…

【BASH】回顾与知识点梳理(二)

【BASH】回顾与知识点梳理 二 二. Shell 的变量功能2.1 什么是变量?2.2 变量的取用与设定: echo, 变量设定规则: set/unset2.3 环境变量的功能用 set 观察所有变量 (含环境变量与自定义变量)export: 自定义变量转成环境变量那如何将环境变量转成自定义变…

Openlayers实战:loadstart和loadend事件

Openlayers开发的项目中,loadstart和loadend事件能很好的显示地图的加载状态,给人明示地图的加载情况,做到不急躁。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN) * @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授…

Pycharm配置Qt Designer、PyUIC、qrcTOpy

Pycharm配置Qt Designer、PyUIC、qrcTOpy 1 Pycharm配置Qt Designer2 Pycharm配置PyUIC3 Pycharm配置qrcTOpy 1 Pycharm配置Qt Designer 打开pycharm的设置栏,点击外部工具,点击“”: 名称:Qt Designer 程序:.....\e…