当前位置: 首页 > news >正文

RedisTemplate序列化

SpringBoot整合Redis,配置RedisTemplate序列化。如果使用StringRedisTemplate,那么不需要配置序列化,但是StringRedisTemplate只能存储简单的String类型数据,如图:


如果使用StringRedisTemplate存储一个常规对象,只能转换成JSON字符串存储,取出后再把JSON字符串转成需要的对象,比较麻烦,所以一般使用RedisTemplate。

一、RedisTemplate配置使用

使用RedisTemplate之前一般需要配置序列化方式,这里以单节点Redis为例:

1、添加maven依赖

        <!-- redis --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>


2、添加配置

import lombok.extern.slf4j.Slf4j;
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.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;/*** Redis配置*/
@Slf4j
@Configuration
public class RedisConfig {/*** 实例化 RedisTemplate 对象* 设置序列化方式* 默认序列化为:JdkSerializationRedisSerializer* JdkSerializationRedisSerializer       占用空间小,序列化速度慢,客户端可读性差* GenericJackson2JsonRedisSerializer    占用空间大,序列化速度快,客户端可读性好** @return*/@Beanpublic RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {log.info("redisTemplate init. serializer=GenericJackson2JsonRedisSerializer");RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();// 设置 key 的序列化器 StringRedisSerializerredisTemplate.setKeySerializer(stringRedisSerializer);redisTemplate.setHashKeySerializer(stringRedisSerializer);// 设置 value 的序列化器 GenericJackson2JsonRedisSerializerGenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();redisTemplate.setHashValueSerializer(genericJackson2JsonRedisSerializer);redisTemplate.setValueSerializer(genericJackson2JsonRedisSerializer);redisTemplate.setConnectionFactory(factory);return redisTemplate;}


3、使用
 

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;/*** Redis常用方法*/
@Component
public class RedisCache {/*** 1分钟,单位:秒*/private static final long ONE_MINUTE = 60;@Autowiredprivate RedisTemplate redisTemplate;/*** 存储* @param key   唯一键* @param value     值* @param expireTime    过期时间,单位:秒* @param <T>*/public <T> void set(String key, T value, long expireTime) {redisTemplate.opsForValue().set(key, value, expireTime, TimeUnit.SECONDS);}/*** 查询* @param key   唯一键* @param <T>* @return*/public <T> T get(String key) {return (T) redisTemplate.opsForValue().get(key);}/*** 查询剩余过期时间* @param key   唯一键* @return*/public Long getRemainExpire(String key) {return redisTemplate.opsForValue().getOperations().getExpire(key);}/*** 设置过期时间* @param key   唯一键* @param expireTime    过期时间,单位:秒* @return*/public Boolean setExpire(String key, long expireTime) {return redisTemplate.opsForValue().getOperations().expire(key,expireTime, TimeUnit.SECONDS);}
}

4.总结

RedisTemplate默认使用的是JDK 序列化方式(JdkSerializationRedisSerializer) ,这种序列化方式可以不用在配置类里配置,默认即可,这种不推荐使用,这种方式对应客户端来说可读性差,不利于人工排查问题。

所以一般用JSON序列化,JSON序列化方式又有两种,GenericJackson2JsonRedisSerializer和Jackson2JsonRedisSerializer,GenericJackson2JsonRedisSerializer配置更简单方便些。

对比一下JDK 序列化和JSON序列化的可读性,如图:

JDK 序列化:

JSON序列化:

相关文章:

RedisTemplate序列化

SpringBoot整合Redis&#xff0c;配置RedisTemplate序列化。如果使用StringRedisTemplate&#xff0c;那么不需要配置序列化&#xff0c;但是StringRedisTemplate只能存储简单的String类型数据&#xff0c;如图&#xff1a; 如果使用StringRedisTemplate存储一个常规对象&#…...

小米SU7汽车发布会; 齐碳科技C+轮融资;网易 1 月 3 日发布子曰教育大模型;百度文心一言用户数已突破 1 亿

投融资 • 3200 家 VC 投资的创业公司破产&#xff0c;那个投 PLG 的 VC 宣布暂停投资了• 云天励飞参与 AI 技术与解决方案提供商智慧互通 Pre-IPO 轮融资• 百度投资 AIGC 公司必优科技• MicroLED量测公司点莘技术获数千万级融资• 智慧互通获AI上市公司云天励飞Pre-IPO轮战…...

Python----matplotlib库

目录 plt库的字体&#xff1a; plt的操作绘图函数&#xff1a; plt.figure(figsizeNone, facecolorNone): plt.subplot(nrows, ncols, plot_number)&#xff1a; plt.axes(rect)&#xff1a; plt.subplots_adjust(): plt的读取和显示相关函数&#xff1a; plt库的基础图…...

PostgreSQL荣获DB-Engines 2023年度数据库

数据库流行度排名网站 DB-Engines 2024 年 1 月 2 日发布文章宣称&#xff0c;PostgreSQL 荣获 2023 年度数据库管理系统称号。 PostgreSQL 在过去一年中获得了比其他 417 个产品更多的流行度增长&#xff0c;因此获得了 2023 年度 DBMS。 DB-Engines 通过计算每种数据库 2024 …...

【每天五道题,轻松公务员】Day3:太阳常识

目录 专栏了解 ☞欢迎订阅☜ ★专栏亮点★ ◇专栏作者◇ 太阳常识 题目一 题目二 题目三 题目四 题目五 答案 补充扩展 专栏了解 ☞欢迎订阅☜ 欢迎订阅此专栏&#xff1a;考公务员&#xff0c;必订&#xff01;https://blog.csdn.net/m0_73787047/category_1254…...

基于metersphere和supper-jacoco 测试覆盖率落地实践

一、背景及目标 背景 1、技术研发流程为测试 提供冒烟用例-开发根据用例自测-提测-开始测试&#xff0c;这一套流程&#xff0c;但是中间开发是否真实执行冒烟&#xff0c;测试并不知晓&#xff0c;而且测试提供冒烟用例是否符合标准也没法进行量化 2、公司产品属于saas产品&…...

LeetCode每周五题_2024/01/01~2024/01/05

文章目录 1599. 经营摩天轮的最大利润 [2024/01/01]题目题解 466. 统计重复个数 [2024/01/02]题目题解 2487. 从链表中移除节点 [2024/01/03]题目题解 1599. 经营摩天轮的最大利润 [2024/01/01] 题目 1599. 经营摩天轮的最大利润 你正在经营一座摩天轮&#xff0c;该摩天轮共…...

【华为OD机试真题2023CD卷 JAVAJS】抢7游戏

华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 抢7游戏 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: A、B两个人玩抢7游戏,游戏规则为A先报一个起始数字X(10<起始数字<10000),B报下一个数字Y(X-Y<3),A再报一个数字Z(Y-Z<3),以此类推,直…...

14.7-时序反馈移位寄存器建模

时序反馈移位寄存器建模 1&#xff0c;阻塞赋值实现的LFSR&#xff0c;实际上并不具有LFSR功能1.1.1&#xff0c;RTL设计&#xff0c;阻塞赋值1.1.2&#xff0c;tb测试代码1.1.3&#xff0c;波形仿真输出&#xff0c;SIM输出&#xff0c;没实现LFSR1.2.1&#xff0c;RTL设计&am…...

【设计模式】二十一.行为型模式之状态模式

状态模式 一. 说明 状态模式通常描述一个类不同行为的多个状态变更&#xff0c;对象的行为依赖它的状态&#xff0c;它是一种行为型模式。 状态模式可以用来消除代码中大量的if-else结构&#xff0c;它明确对象是有状态的、对象的不同状态对应的行为不一样、行为之间是可以切…...

微服务实战系列之Dubbo(下)

前言 眼看着2023即将走远&#xff0c;心里想着似乎还有啥&#xff0c;需要再跟各位盆友叨叨。这不说曹操&#xff0c;曹操就来了。趁着上一篇Dubbo博文的余温尚在&#xff0c;博主兴匆匆地“赶制”了Dubbo的下集&#xff0c;以飨读者。 上一篇博主依然从Dubbo的内核出发&#…...

《剑指offer》数学第二题:求1+2+3+...+n

题目描述&#xff1a; 求123...n&#xff0c;要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句&#xff08;A?B:C&#xff09;。思路&#xff1a; 我们可以用递归和短路运算符来进行运算&#xff0c;具体代码如下。 代码实现&#xff1a; pac…...

阿里云服务器3M固定带宽速度快吗?

阿里云服务器3M固定带宽是什么意思&#xff1f;速度快吗&#xff1f;3M固定带宽是指云服务器的公网带宽&#xff0c;用于在外网提供服务的&#xff0c;3M带宽的下载速度是384KB/秒&#xff0c;上传速度是1280KB/秒&#xff0c;对于个人博客或流量不多的企业官网速度还是挺快的&…...

美易官方:新年伊始美企狂发450多亿美元债券

新年伊始&#xff0c;美国企业疯狂发行了价值超过450亿美元的债券&#xff0c;创下了历史新高。这一数字比去年同期增长了约50%&#xff0c;凸显出美国企业在全球经济增长放缓的背景下&#xff0c;依然保持着强劲的融资需求和信心。美国企业借款人周三将发行近160亿美元高评级债…...

[云原生] Go web工作流程

web工作流程 Web服务器的工作原理可以简单地归纳为 客户机通过TCP/IP协议建立到服务器的TCP连接客户端向服务器发送HTTP协议请求包&#xff0c;请求服务器里的资源文档服务器向客户机发送HTTP协议应答包&#xff0c;如果请求的资源包含有动态语言的内容&#xff0c;那么服务器…...

【PostgreSQL】约束-主键

【PostgreSQL】约束链接 检查 唯一 主键 外键 排他 主键 主键&#xff08;Primary Key&#xff09;是数据库表中用于唯一标识每一行记录的字段。主键具有以下特点&#xff1a; 唯一性&#xff1a;每个主键值在表中是唯一的&#xff0c;不允许出现重复值。非空性&#xff1a…...

IDEA 控制台中文乱码问题解决方法(UTF-8 编码)

设置 IDEA 编码格式 1&#xff1a;打开 IntelliJ IDEA>File>Setting>Editor>File Encodings&#xff0c;将 Global Encoding、Project Encoding、Default encodeing for properties files 这三项都设置成 UTF-8 2&#xff1a;将 vm option 参数改为&#xff1a; -…...

ssm基于BS的仓库在线管理系统的设计与实现论文

摘 要 如今的时代&#xff0c;是有史以来最好的时代&#xff0c;随着计算机的发展到现在的移动终端的发展&#xff0c;国内目前信息技术已经在世界上遥遥领先&#xff0c;让人们感觉到处于信息大爆炸的社会。信息时代的信息处理肯定不能用之前的手工处理这样的解决方法&#x…...

鸿蒙HarmonyOs:为什么不支持热更新?

学习了一段时间的鸿蒙开发&#xff0c;发现鸿蒙开发还是比较简单的&#xff0c;今天突然心血来潮&#xff0c;研究了一下鸿蒙热更新&#xff0c;最终得出的结论是鸿蒙暂时不支持热更新。 鸿蒙app开发主要是利用的ArkTs语言&#xff0c;ArkTs又是基于TypeScript语言的&#xff0…...

修改 Ubuntu 的配置

目录 一、修改地址 1. 修改本机IP 二、修改网关 1. 查看网关地址 2. 设置默认网关 三、重启网络 1. 重启网络 2. 刷新网络 四、修改主机名 1. 查看主机名 2. 修改主机名 一、修改地址 1. 修改本机IP sudo ifconfig en…...

虹科方案|从困境到突破:TigoLeap方案引领数据采集与优化

导读&#xff1a;在数字化工厂和智能制造的时代&#xff0c;数据已经成为优化机器和流程的关键。然而&#xff0c;如何高效地收集和处理这些数据&#xff0c;特别是在开发、部署和生产阶段&#xff0c;仍是企业面临的一大挑战。虹科TigoLeap平台&#xff0c;作为一款引领行业变…...

【教学类-43-02】20231226 九宫格数独2.0(n=9)(ChatGPT AI对话大师生成 回溯算法)

作品展示&#xff1a; 背景需求&#xff1a; 大4班20号说&#xff1a;我不会做这种&#xff08;九宫格&#xff09;&#xff0c;我做的是小格子的&#xff0c; 他把手工纸翻过来&#xff0c;在反面自己画了矩阵格子。向我展示&#xff1a; “我会做这种&#xff01;” 原来他…...

麒麟Kylin服务器版-破解root密码

一、单用户模式修改root密码 1.重启服务器系统后&#xff0c;将光标移动到第二项&#xff0c;按【e】键进入用户登录页面。 2.在【username】下方所在行输入root名称&#xff0c;【password】下方所在行输入密码Kylin123123后&#xff0c;进入编辑模式。代码如下&#xff1a; …...

cnPuTTY 0.80.0.1—PuTTY Release 0.80中文版本简单说明~~

2023-12-18 官方发布了PuTTY 0.80本次发布主要是针对Terrapin攻击(CVE-2023-48795)的修改发布。 更多详细的内容请查看PuTTY Change Log。 有关Terrapin攻击可用简单参考&#xff1a;警告&#xff01;&#xff01;&#xff01;Terrapin攻击(CVE-2023-48795)~~~ 为了缓解此漏洞…...

向爬虫而生---Redis 拓宽篇1 < pipeline传输效率>

前言: 都知道,Redis是一款高效的内存数据库;每条命令都能很快响应,但是如果我们把服务器布在网络上,每次一个命令来回传送也是需要花费时间的; pipeline传输技术则是进一步提高Redis的性能和传输效率的一种方法。 正文: pipeline与普通命令发送方式的区别 Pipeline是一种机制&…...

Unity Hub 无法激活许可证

烦死了~ &#x1f635;‍&#x1f4ab; 卸载UnityHub, 安装旧版本&#x1f448;激活许可证&#xff0c; 如果出现旧版本无法识别Editor的情况需要卸载了再装最新版本的UnityHub...

数据分析求职-如何准备

今天咱们来聊一聊数据分析岗位求职到底需要准备什么&#xff1f;什么时间准备&#xff1f;该如何准备&#xff1f; 1. 求职时间轴 上图很清楚地把求职时间轴展示出来了&#xff0c;重复的话也不多说了&#xff0c;有两点想和同学们重点提下&#xff1a; 1&#xff09;一定一定…...

新手能掌握 PyTorch 的填充技术:深入理解反射、复制、零值和常数填充

目录 torch.nn子模块详解 nn.ReflectionPad1d 参数说明&#xff1a; 形状&#xff08;Shape&#xff09;&#xff1a; 使用示例&#xff1a; 注意事项&#xff1a; nn.ReflectionPad2d 参数说明&#xff1a; 形状&#xff08;Shape&#xff09;&#xff1a; 使用示例…...

地震烈度速报与预警工程成功案例的经验分享 | TDengine 技术培训班第一期成功落地

近日&#xff0c;涛思数据在成都开设了“国家地震烈度速报与预警工程数据库 TDengine、消息中间件 TMQ 技术培训班”&#xff0c;这次培训活动共分为三期&#xff0c;而本次活动是第一期。其目标是帮助参与者深入了解 TDengine 和 TMQ 的技术特点和应用场景&#xff0c;并学习如…...

集群部署篇--Redis 集群动态伸缩

文章目录 前言一、redis 节点的添加1.1 redis 的实例部署&#xff1a;1.2 redis 节点添加&#xff1a;1.3 槽位分配&#xff1a;1.4 添加从节点&#xff1a; 二、redis 节点的减少2.1 移除主节点2.1.1 迁移槽位2.1.1 删除节点&#xff1a; 三、redis 删除节点的重新加入3.1 加入…...

做养生产品哪个网站好/友情链接又称

Java参数传值&#xff1a;特点&#xff1a;1、参数属于局部变量&#xff1b;2、当对象调用方法时&#xff0c;参数被分配内存空间&#xff0c;同时要求对象为参数传值才能进行使用&#xff0c;即方法被调用时&#xff0c;参数变量必须有具体的值&#xff1b;如下代码演示&#…...

冠县网站建设电话/高端大气网站建设

利用jenkins的远程构建功能&#xff0c;我们可以使用任何脚本&#xff0c;甚至定制一个Web页来控制Job的执行&#xff0c;但是远程构建你如果直接使用的话&#xff0c;老是需要登录才能执行&#xff0c;如何避免登录&#xff1f;稍微折腾了一下&#xff0c;调通了。 1、点击右上…...

用dw怎么做网站/淘宝权重查询入口

背景 在上午探索了Windows下时间任务创建运行的可视化界面和Schtasks命令行工具且默默失败后&#xff0c;下午我决定不依不饶地去看一下Linux系统下是怎么创建时间任务的。其实我Linux接触得不多&#xff0c;而且今天也是新接触的crontab命令&#xff0c;所以不免会踩坑踩雷&am…...

深圳企业官网网站建设/重庆森林讲了什么故事

点击蓝字关注我们吧&#xff01;输入当我们需要和开发交互式工具的时候&#xff0c;需要接收用户的输入&#xff0c;怎么做呢&#xff1f;name input("Name:") age input("Age:") info ---------- info of %s ---------- Name&#xff1a;%s Age&#…...

网站做优化的成本/沧州网站优化公司

什么是内部类&#xff1f; 内部类是指在一个外部类的内部再定义一个类。内部类作为外部类的一个成员&#xff0c;并且依附于外部类而存在的。内部类可为静态&#xff0c;可用protected和private修饰&#xff08;而外部类只能使用public和缺省的包访问权限&#xff09;。内部类主…...

广州门户网站制作/辽源seo

1、 【致命】不是所有Panic都能捕获 我们知道Golang给开发人员提供recover()机制&#xff0c;对堆栈异常&#xff08;panic&#xff09;进行捕获并自定义其处理逻辑。下面举个例子&#xff1a; 构造一个除0的异常场景&#xff1a;输出结果&#xff1a;我们看到程序正常退出&…...