redis配置和工具类

news/2024/11/14 13:49:23/文章来源:https://www.cnblogs.com/luo9tian/p/18545804

依赖

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

序列化配置类

package com.syh.pdd.configuration;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
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;
@Configuration
public class RedisConfig {//自定义序列化,反序列化对象
public RedisSerializer jsonSerializer(){Jackson2JsonRedisSerializer serializer &#61;new Jackson2JsonRedisSerializer(Object.class);//基于此对象进行序列化的方式ObjectMapper objectMapper &#61; new ObjectMapper();

//表示get方法使用此序列化 //表示全部权限的方法可以被序列化,默认public objectMapper.setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.ANY);
//修改序列化存储类型,对想序列化会将对象的类型存储到redis数据库
//假如没有这个配置,redis储存时不储存类型,反序列化默认存储到map
objectMapper.activateDefaultTyping(objectMapper.getPolymorphicTypeValidator(),
ObjectMapper.DefaultTyping.NON_FINAL,//激活序列化类型储存
JsonTypeInfo.As.PROPERTY);//表示类型会以json对象属性形 式存储

    //对象属性为空时&#xff0c;不进行序列化储存objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);serializer.setObjectMapper(objectMapper);return  serializer;
}&#64;Bean
public RedisTemplate&lt;Object, Object&gt; redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate&lt;Object, Object&gt; template &#61; new RedisTemplate();template.setConnectionFactory(redisConnectionFactory);//字符串类型的数据的键为RedisSerializer序列化方式template.setKeySerializer(RedisSerializer.string());template.setHashKeySerializer(RedisSerializer.string());//字符串类型的数据的值的序列化方式为自定义template.setValueSerializer(jsonSerializer());template.setHashValueSerializer(jsonSerializer());//spring规范中假如修改bean对象的默认特性,建议调用一下template.afterPropertiesSet();return template;
}

}

RedisTemplate 工具类

package com.syh.pdd.configuration;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.context.annotation.Bean;
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;

@Configuration
public class RedisConfig {
//自定义序列化,反序列化对象

public RedisSerializer jsonSerializer(){Jackson2JsonRedisSerializer serializer =new Jackson2JsonRedisSerializer(Object.class);//基于此对象进行序列化的方式ObjectMapper objectMapper = new ObjectMapper();

//表示get方法使用此序列化 //表示全部权限的方法可以被序列化,默认public
objectMapper.setVisibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.ANY);

    //修改序列化存储类型,对想序列化会将对象的类型存储到redis数据库//假如没有这个配置,redis储存时不储存类型,反序列化默认存储到mapobjectMapper.activateDefaultTyping(objectMapper.getPolymorphicTypeValidator(),ObjectMapper.DefaultTyping.NON_FINAL,//激活序列化类型储存JsonTypeInfo.As.PROPERTY);//表示类型会以json对象属性形 式存储//对象属性为空时,不进行序列化储存objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);serializer.setObjectMapper(objectMapper);return  serializer;
}@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<Object, Object> template = new RedisTemplate();template.setConnectionFactory(redisConnectionFactory);//字符串类型的数据的键为RedisSerializer序列化方式template.setKeySerializer(RedisSerializer.string());template.setHashKeySerializer(RedisSerializer.string());//字符串类型的数据的值的序列化方式为自定义template.setValueSerializer(jsonSerializer());template.setHashValueSerializer(jsonSerializer());//spring规范中假如修改bean对象的默认特性,建议调用一下template.afterPropertiesSet();return template;
}

}

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

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

相关文章

Grafana:监控PostgreSQL数据运维新利器

在数据驱动的业务环境中,数据库的性能监控是确保数据流畅和系统稳定的关键。PostgreSQL,作为强大的开源关系型数据库,其性能监控尤为重要。Grafana,一个开源的数据可视化和监控平台,提供了一个直观的界面来监控和分析数据。本文将带您了解如何利用Grafana来监控PostgreSQL…

python-reverse顺序反转

list01=[1,2,3,8,5] list01.reverse() #顺序反转 print(list01)

【教程】第六章:合作伙伴——协作无间,灵活掌控

一起在 NocoBase 中创造精彩应用!这些教程将通过手把手的操作,帮助你全面掌握核心功能,激发灵感,打造并分享满足多样需求的应用。在团队协作中,每个人都应该明确自己的职责和权限,才能确保工作顺利推进。今天,我们将一起来学习角色创建和权限管理,让协作更加顺畅、有序…

Salesforce Flow低代码,让流程自动化更简单!

Salesforce平台每月提供超过1万亿次自动化服务,每月可节省超1090亿小时,预计为客户创造超2万亿美元的商业价值。这是一组不可思议的数字,充分展现了软件自动化的力量。 Flow是整个Salesforce平台自动化的未来,一直在将大量资源用于开发Flow创新。本次Winter 25中自然也少不…

数据可视化CSS3

可视化-解决方案2D动画-transform坐标系transform-origin3D动画-transform3D旋转-rotateZ 、rotateX、rotateY3D旋转-rotate3d3D透视-perspective3D位移-translateX、translateY、translateZ3D位移-translate3d3D缩放-scaleX、scaleY、scaleZ3D缩放-scale3d3D空间-transform-st…

电源模块质量好坏,电路原理设计和焊接工艺 芯片,变压器元件 电解电容和陶瓷电容 批量检测老化和高温老化

电源模块质量好坏,电路原理设计和焊接工艺 芯片,变压器元件 电解电容和陶瓷电容 批量检测老化和高温老化ACDC DCDC电源模块是电子设备的重要组成部分,其可靠性直接关系到产品的质量。因此,在选择电源模块时,除了关注输入、输出、纹波、击穿、温度、认证等特性指标外,还需…

当然不是草台班子-冲刺日志1

作业所属课程 软件工程2024作业要求 2024秋软工实践团队作业-第三次( Alpha冲刺)作业目标 alpha冲刺完成项目核心功能团队名称 当然不是草台班子团队成员学号 姓名102201427 侯丽珂102201426 郑嘉祺102201241 戴康怡102201218 肖晗涵112200328 谢李东292300304 陈鹭102201242…

洛谷P11183 [ROIR 2018 Day2] 大数据处理

涉及知识点:动态开点线段树,贪心 前言 很妙很感性直观的贪心,做完神清气爽。 题意 有一个长为 \(2^k\) 的序列,编号从 \(0\) 开始,你要在上面染色,每次只能染色 \([k2^i,(k+1)2^i-1]\) 的区间(\(0\leq i<k\)),问最少要染色多少次才能变成给定的目标序列。目标序列以…

《刚刚问世》系列初窥篇-Java+Playwright自动化测试-4-启动浏览器-基于Maven(详细教程)

1.简介 上一篇文章,宏哥已经在搭建的java项目环境中添加jar包实践了如何启动浏览器,今天就在基于maven项目的环境中给小伙伴们或者童鞋们演示一下如何启动浏览器。 2.eclipse中新建maven项目 1.依次点击eclipse的file - new - other ,如下图所示:2.在搜索框输入关键字“mav…

GPU 环境搭建指南:使用 GPU Operator 加速 Kubernetes GPU 环境搭建

本文主要分享如何使用 GPU Operator 快速搭建 Kubernetes GPU 环境。1. 概述 上一篇文章 GPU 使用指南:如何在裸机、Docker、K8s 等环境中使用 GPU 分享了裸机、Docker 环境以及 K8s 环境中如何使用 GPU。 整个流程还算比较简单,但是因为需要在节点上安装 GPU Driver、Contai…

OpenCV开发笔记(八十二):两图拼接使用渐进色蒙版场景过渡缝隙

前言对于图像拼接,前面探讨了通过基于Stitcher进行拼接过渡和基于特征点进行拼接过渡,这2个过渡的方式是摄像头拍摄角度和方向不应差距太大。  对于特定的场景,本身摄像头拍摄角度差距较大,拉伸变换后也难做到完美的缝隙拼接,这个时候使用渐近过渡反倒是最好的。 Demo单…

【SageMath 9.3软件下载与安装教程】

1、安装包 SageMath 9.3: 链接:https://pan.quark.cn/s/e747450b98e1 提取码:vaMJ 2、安装教程(建议关闭杀毒软件) 1) 双击解压安装包安装,弹窗安装对话框2) 点击下一步3) 选择I accept,点击下一步4) 默认,点击下一步5) 默认文件夹,点…