首页 > 数据库 >redis配置和工具类

redis配置和工具类

时间:2024-11-14 13:42:21浏览次数:1  
标签:配置 redis template import 工具 序列化 com objectMapper

依赖

<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储存时不储存类型,反序列化默认存储到map
    objectMapper.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;
}

}

标签:配置,redis,template,import,工具,序列化,com,objectMapper
From: https://www.cnblogs.com/luo9tian/p/18545804

相关文章

  • 2024年最佳项目管理软件排行,大厂都在用的13个工具!
    随着企业对项目管理的需求日益增长,项目管理软件市场也在迅速发展。2024年,市场上出现了许多优秀的项目管理工具,这些工具不仅功能强大,而且用户体验优秀,能够满足不同规模和需求的团队。以下是经过精心挑选的13款项目管理软件,特别适合大厂使用,其中包含了国产开源项目管理软件禅道。1.......
  • 爬虫开发工具与环境搭建——开发工具介绍
    第二章:爬虫开发工具与环境搭建第一节开发工具介绍爬虫开发需要一些合适的工具和框架来高效地抓取网页数据。在这节中,我们将介绍常用的开发工具,帮助开发者快速搭建爬虫开发环境。1.Python与爬虫框架选择Python因其简洁、易学的语法以及强大的第三方库支持,成为了爬虫开发......
  • 爬虫开发工具与环境搭建——使用Postman和浏览器开发者工具
    第三节:使用Postman和浏览器开发者工具在网络爬虫开发过程中,我们经常需要对HTTP请求进行测试、分析和调试。Postman和浏览器开发者工具(特别是Network面板和Console面板)是两种最常用的工具,能够帮助开发者有效地捕获、分析和调试HTTP请求与响应,从而使爬虫的开发过程更加顺利。1.......
  • Maven工程依赖配置
    要在项目中配置Maven私服,通常需要修改两个文件:Maven的settings.xml和项目的pom.xml。以下是具体的配置步骤:1.修改Maven的settings.xml文件settings.xml文件通常位于Maven的安装目录下的conf文件夹中。你需要在<servers>标签内添加私服的认证信息:<servers><server>......
  • awk是一种在 Linux 和 Unix 系统中非常强大且常用的文本处理工具
    一、awk介绍awk是一种在Linux和Unix系统中非常强大且常用的文本处理工具,它的名字来源于其三位创始人AlfredAho、PeterWeinberger和BrianKernighan的姓氏首字母。awk可以对文本文件(或来自标准输入的文本流)按行进行扫描,并根据用户指定的规则来处理文本,比如提取特......
  • 鸿蒙NEXT开发实用技巧:通用工具类
    今天分享一个幽蓝君自己在开发中的小技巧,就是封装一个通用工具类,之前大家如果下载过幽蓝君的代码可能也会发现这个东西。比如我们在开发中有一些比较常用的颜色、尺寸或者方法,都可以用一个类封装起来,这样不仅使用方便,统一修改也更加方便。首先,创建一个和pages同级别的文件夹,在文......
  • tomcat 多实例多项目部署,配置解析
    背景一台机器上,如果想要部署多个tomcat实例,而又不想安装多个tomcat的话,可以借助tomcat的Catalina_base实现共享类库和bin命令,只要自定义自己的配置即可。关于CATALINA_HOME和CATALINA_BASE官方解释:CATALINA_HOME:表示Tomcat安装的根目录,例如/home/tomcat/apache-tomcat-9......
  • 鸿蒙开发实战:鸿蒙应用开发中的页面管理工具类详解
    一、引言在鸿蒙应用开发的征程中,如何高效地管理页面布局与显示,以满足用户对于沉浸式体验、个性化StatusBar颜色等界面特性的需求,一直是开发者们关注的焦点。为此,我特别设计了一款实用的“页面管理工具类”,它具备强大的功能,能帮助开发者轻松应对各种页面管理挑战。二、页面管理......
  • 鸿蒙开发实战:轻松配置多环境目录,实现高效应用部署
    一、配置环境参数首先,我们需要为不同的环境配置参数。这些参数可以存放在JSON文件中,例如我们创建一个名为config.json的文件,内容如下:{"sslkey":"11==","qrkey":"122="}注意,这里仅为示例,实际参数请根据你的应用需求进行配置。二、建立环境目录在鸿蒙的AppScope中,我们可......
  • 痞子衡嵌入式:在i.MXRT启动头FDCB里配置串行NOR Flash多个寄存器的注意事项
    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是在FDCB里配置串行NORFlash多个寄存器的注意事项。关于使用i.MXRT启动头FDCB来设置Flash内部寄存器,痞子衡写过如下两篇文章,在进入本文之前,建议大家先阅读下这两篇文章,有个初步了解。《在FDCB里设......