redis序列化
文章目录
- 1、为什么要进行序列化操作?
- 2、序列化方式
- 2.1、自定义序列化
- 2. 2、StringRedisTemplate(重点)
1、为什么要进行序列化操作?
不进行序列化向redis存入数据代码:
@SpringBootTest
class RedisDemoApplicationTests {@Autowiredprivate RedisTemplate redisTemplate;@Testvoid testString() {redisTemplate.opsForValue().set("name", "狗哥");Object name = redisTemplate.opsForValue().get("name");System.out.println("name = " + name);}
}
默认使用的JDK的序列化为字节的方式,JDK序列化的缺点:
- 可读性差
- 内存占用大

2、序列化方式
2.1、自定义序列化
使用Json序列化代替JDK序列化
@Configuration
public class RedisConfig {@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory){//设置redisTemplate对象RedisTemplate<String, Object> template = new RedisTemplate<>();//设置连接工厂template.setConnectionFactory(connectionFactory);//设置json序列化工具GenericJackson2JsonRedisSerializer jsonRedisSerializer = new GenericJackson2JsonRedisSerializer();//设置key的序列化template.setKeySerializer(RedisSerializer.string());template.setHashKeySerializer(RedisSerializer.string());//设置value的序列化template.setValueSerializer(jsonRedisSerializer);template.setHashKeySerializer(jsonRedisSerializer);//返回return template;}
}
@SpringBootTest
class RedisDemoApplicationTests {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;@Testvoid testString() {redisTemplate.opsForValue().set("name", "狗哥");Object name = redisTemplate.opsForValue().get("name");System.out.println("name = " + name);}@Testvoid testSaveUser(){//写入数据redisTemplate.opsForValue().set("user:100", new User("虎哥", 21));//获取数据Object o = (User)redisTemplate.opsForValue().get("user:100");System.out.println("o = " + o);}
}

2. 2、StringRedisTemplate(重点)
不使用JSON序列化器来处理value,统一使用String序列化器。
只存储String类型的key和value。
存储Java对象时,手动进行对象的序列化和反序列化。

@SpringBootTest
public class RedisStringTests {@Autowiredprivate StringRedisTemplate stringRedisTemplate;@Testvoid testString() {stringRedisTemplate.opsForValue().set("name1", "哥");Object name = stringRedisTemplate.opsForValue().get("name1");System.out.println("name1 = " + name);}//定义序列化对象private static final ObjectMapper mapper = new ObjectMapper();@Testvoid testSaveUser() throws JsonProcessingException {//创建对象User user = new User("虎哥", 18);//手动序列化String json = mapper.writeValueAsString(user);//写入数据stringRedisTemplate.opsForValue().set("user:200", json);//读取数据String jsonUser = stringRedisTemplate.opsForValue().get("user:200");//反序列化User user1 = mapper.readValue(jsonUser, User.class);System.out.println("user1" + user1);}
}
相关文章:
redis序列化
文章目录 1、为什么要进行序列化操作?2、序列化方式2.1、自定义序列化2. 2、StringRedisTemplate(重点) 1、为什么要进行序列化操作? 不进行序列化向redis存入数据代码: SpringBootTest class RedisDemoApplicationT…...
IOT-Tree 1.7.0实现了一个类似Node-Red的流程功能
本人一直研究这个软件,1.7.0版本最近刚刚发布,里面有个大变化,增加了消息流的功能,这个功能和IBM的Node-Red很相似。 Node-Red那个图形化流程很多年前就给了我很深刻的印象,我个人理解是,通过这样的图形化…...
nc网络收发测试-tcp客户端\TCP服务器\UDP\UDP广播
netcat(nc): 作用:一个功能强大的网络工具,提供了简单的网络测试和网络编程功能。工作原理:可以用于建立TCP或UDP连接,并发送和接收数据。示例用法: 监听TCP端口:nc -l 1…...
程序员该有怎么样的职业素养
目录 1、持续学习 2、解决问题的能力 3、团队协作能力 4、责任感 5、沟通能力 6、总结 作为一个从业者,我认为对于程序员而言,职业素养是非常重要的。职业素养不仅影响个人的职业发展,也影响团队和企业的整体氛围和效率。在我的职业生涯…...
51交通灯
一、基本原理 利用51单片机控制各个路口红绿灯及时间显示。 设计的重点: 1、各个路口红绿灯亮灭的规则,暂不考虑左转方向; 2、倒计时的实现,利用单片机的定时器进行计数得到秒信号; 3、时间显示:东西南…...
鸿蒙Arkts上传图片并获取接口返回信息
需求: 选择相册图片后,将文件上传到服务器,接口会返回图片地址。 问题: 1、鸿蒙自带的文件上传返回值只会返回上传状态,不会返回接口返回信息。 类似问题 HarmonyOS上传文件以及权限授权_harmonyos中axios上传文件…...
超文本标记语言(HTML)简介
HTML 基础 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用来结构化 Web 网页及其内容的标记语言。网页内容可以是:一组段落、一个重点信息列表、也可以含有图片和数据表。正如标题所示…...
使用thymeleaf直接渲染字符串
目录 一、依赖 二、示例代码 一、依赖 <--JAVA 8--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId><version>2.7.18</version></dependency><-…...
Spring Boot整合发送QQ邮箱功能
1. 创建Spring Boot项目 使用Spring Initializr(https://start.spring.io/)创建一个新的Spring Boot项目,并添加spring-boot-starter-mail依赖。 2. 添加配置 在application.properties或application.yml文件中添加QQ邮箱的SMTP配置。这里…...
Milvus向量数据库
Milvus 是一个开源的向量数据库,专为处理高维向量数据而设计,常用于大规模向量相似性搜索和基于向量的机器学习应用。它支持高效地管理、搜索和操作嵌入(如文本、图像、音频的特征向量),在推荐系统、图像检索、语义搜索…...
python cls的使用
import threadingclass Test:# new方法用于创建类的实例def __new__(cls, *args, **kwargs):print("__new__:", cls.__class__.__name__)return object.__new__(cls) # 返回实例给init self参数# init用于初始化类的实例,实例由new方法传递过来的…...
idea中maven下载依赖缓慢解决方法
解决IDEA中Maven下载依赖包过慢或报错的问题_maven 下载依赖要很久-CSDN博客...
JS 中的各种距离 scrollTop?clientHeight?
元素的各种距离 DOM 对象 属性描述offsetWidth只读,返回元素的宽度(包括元素宽度、内边距和边框,不包括外边距)offsetHeight只读,返回元素的高度(包括元素高度、内边距和边框,不包括外边距&am…...
继承-进阶-易错点
子类同名方法隐藏父类方法 即使调用不匹配也不会再去父类寻找,而是直接报错 //下面代码输出结果:( )class A { public:void f(){ cout<<"A::f()"<<endl; }int a; };class B : public A { public:void f(int a){c…...
【图论应用】使用多路图(multigraph)对上海地铁站点图建模,并解决最短路径问题
文章目录 1 前言2 导包导入数据集3 创建多路图,导入节点和边信息3 绘制线路图4 计算最短路径 1 前言 最近正在学习图神经网络,先pick up了一些最基础的图论知识并学习了一些好玩的应用。 本文启发于B站视频(BV1LY411R7HJ)&#…...
RabbitMQ安装配置,封装工具类,发送消息及监听
1. Get-Started docker安装rabbitmq 拉取镜像 [rootheima ~]# docker pull rabbitmq:3.8-management 3.8-management: Pulling from library/rabbitmq 7b1a6ab2e44d: Pull complete 37f453d83d8f: Pull complete e64e769bc4fd: Pull complete c288a913222f: Pull complet…...
iOS接入Flutter
在现有的iOS项目上接入Flutter,参考链接 第一步:创建flutter项目,即 创建 Flutter module flutter create --template module my_flutter第二步:创建framework,这里选择的是B方式,即 选项 B - 在 Xcode 中…...
【ubuntu】用户添加root权限
添加root用户添加新用户并赋予权限 文件只读,无法更改 rootubuntu-server:/home/ubuntu# vi /etc/sudoers rootubuntu-server:/home/ubuntu# vi /etc/sudoers rootubuntu-server:/home/ubuntu# chmod -R 777 /etc/sudoers rootubuntu-server:/home/ubuntu# vi /et…...
设计通用灵活的LabVIEW自动测试系统
为了在不同客户案例中灵活使用不同设备(如采集卡、Modbus模块)且保持功能一致的LabVIEW自动测试系统,需要采用模块化的软件架构、配置文件管理、标准化接口和良好的升级维护策略。本文从软件架构、模块化设计、配置管理、升级维护、代码管理和…...
C# WinForm —— 35 StatusStrip 介绍
1. 简介 状态栏 StatusStrip,默认在软件的最下方,用于显示系统时间、版本、进度条、账号、角色信息、操作位置信息等 可以在状态栏中添加的控件类型有:StatusLabel、ProgressBar、DropDownButton、SplitButton 2. 属性 属性解释(Name)控…...
终极指南:3分钟学会用Onekey下载Steam游戏清单,告别手动烦恼
终极指南:3分钟学会用Onekey下载Steam游戏清单,告别手动烦恼 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 想要快速获取Steam游戏清单却苦于复杂操作?Oneke…...
Windows平台终极ADB驱动环境一键配置指南:告别繁琐,专注开发
Windows平台终极ADB驱动环境一键配置指南:告别繁琐,专注开发 【免费下载链接】Latest-adb-fastboot-installer-for-windows A Simple Android Driver installer tool for windows (Always installs the latest version) 项目地址: https://gitcode.com…...
WinDirStat:Windows磁盘空间分析与清理的终极解决方案
WinDirStat:Windows磁盘空间分析与清理的终极解决方案 【免费下载链接】windirstat WinDirStat is a disk usage statistics viewer and cleanup tool for Microsoft Windows 项目地址: https://gitcode.com/gh_mirrors/wi/windirstat WinDirStat是一款专为W…...
别再踩坑了!emWin6.x窗口管理器定时器WM_CreateTimer的正确打开方式(附RTOS/裸机源码)
深度解析emWin6.x窗口管理器定时器的实战避坑指南 在嵌入式GUI开发中,emWin的窗口管理器定时器功能是构建动态交互界面的核心工具之一。许多开发者在初次接触WM_CreateTimer时,往往会被看似简单的API背后隐藏的细节所困扰——为什么定时器没有触发&#…...
DGX平台Spark数据处理优化:GPU加速与RAPIDS集成实战
1. 项目概述:一个面向DGX平台的Spark数据处理工具 最近在整理一些高性能计算环境下的数据处理方案时,我重新审视了一个名为 adadrag/nemoclaw-dgx-spark 的项目。这个项目名字看起来有点复杂,拆解一下,核心是“DGX”和“Spark”…...
【大白话说Java面试题 第55题】【JVM篇】第15题:JVM有哪些垃圾收集算法?
📌 PDF:大白话说Java面试题 — 02-JVM篇 第15题:JVM有哪些垃圾收集算法 📚 回答: 核心概念: JVM 的垃圾收集算法是垃圾回收的核心机制,决定了如何高效地标记和回收内存中的垃圾对象。常见的垃…...
qmc-decoder:专业QMC音频文件解密转换工具
qmc-decoder:专业QMC音频文件解密转换工具 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder qmc-decoder是一款高效、专业的QMC音频文件解密转换工具,…...
EVPN实战解析:分布式网关部署与关键配置精要
1. 为什么需要EVPN分布式网关? 在多租户数据中心网络环境中,虚拟机迁移和三层互通是刚需。传统集中式网关就像只有一个出入口的大型停车场,所有车辆必须绕道中央区域才能到达目的地,而分布式网关则相当于在每个楼层都设置了出入口…...
树莓派智能画布:从Raspbian部署到NeoPixel灯光系统集成
1. 项目概述:打造一个会发光的智能画布如果你和我一样,对嵌入式硬件和创意编程的结合着迷,那么将一块普通的画布变成一个由代码控制的动态灯光装置,绝对是一件充满乐趣和成就感的事情。这个项目,我称之为“CompuCanvas…...
年终述职的“数据思维”:用指标和案例讲好你的技术故事
测试人的述职困境又到年终,述职报告像一场无法回避的考试。对于软件测试从业者而言,这往往比定位一个偶发崩溃的缺陷更难——我们习惯了与代码、用例、缺陷打交道,却常常在总结自己一年的价值时陷入沉默。“保障了产品质量”“完成了测试任务…...
