Spring Boot 整合 Redis 并设置序列化类型
1.Spring Boot 整合 Redis
1.1 导入依赖
如果在创建Spring Boot
项目的时候需要使用Redis
的话, 只需要导入下面一个依赖就可:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
1.2 配置Redis链接属性
配置Redis
属性, 用application.xml
和 application.yml
都可以, 这里示例使用的是更简洁的application.yml
spring:
redis:
host: 127.0.0.1 # redis的ip
port: 6379 # 端口号
password: ****** # redis的密码, 如果没有密码可以不配置此项
database: 0 # redis的index
timeout: 6000 # 连接redis的超时时间, ms
jedis: # jedis连接池配置
pool:
min-idle: 5 # 最小空闲连接数
max-idle: 10 # 最大空闲连接数
max-active: 15 # 最大活跃连接数
max-wait: 5000 # 最大阻塞等待时间, ms
1.3 使用
RedisAutoConfiguration
为我们默认配置了JedisConnectionFactory
, RedisTemplate
以及StringRedisTemplate
, 让我们可以直接的使用Redis
作为数据储存
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private StringRedisTemplate stringRedisTemplate;
String Data Redis
为我们提供了RedisTemplate
和 StringRedisTemplate
两个模版来进行数据操作, 其中:
StringRedisTemplate
只针对键值都是字符串的数据进行操作.
当我们的数据存储到Redis
的时候,我们的键(key)和值(value)都是通过Spring提供的Serializer
序列化到数据可中的
RedisTemplate 默认使用的是 JdkSerializationRedisSerializer
StringRedisTemplate 默认使用的是 StringRedisSerializer
Spring Data JPA
为我们提供了下面的 Serializer:
- GenericToStringSerializer
- Jackson2JsonRedisSerializer
- JdkSerializationRedisSerializer
- OxmSerializer
- StringRedisSerializer
2.配置 RedisTemplate 序列化类型
Spring Boot为我们自动配置了RedisTemplate
, 而RedisTemplate
使用的是JdkSerializationRedisSerializer
, 这个对我们用redis图形化客户端很不直观, 因为JdkSerializationRedisSerializer
使用二进制形式储存数据, 在此我们将自己配置RedisTemplate
并定义Serializer
package com.kutesmart.bl.config.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
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.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
/**
* @author jiangkd
* @date 2021/2/7 14:24
*/
@Configuration
public class RedisTemplateConfig {
@Autowired
private RedisConnectionFactory redisConnectionFactory;
/**
* 注入RedisTemplate<String, Object>
*
* @return RedisTemplate
*/
@Bean("stringObjectRedisTemplate")
public RedisTemplate<String, Object> redisTemplate() {
// 创建 redisTemplate 模版
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
// 关联 redisConnectionFactory
redisTemplate.setConnectionFactory(redisConnectionFactory);
// 序列化格式
RedisSerializer<String> stringSerializer = redisTemplate.getStringSerializer();
// 创建序列化器
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer =
new Jackson2JsonRedisSerializer<>(Object.class);
ObjectMapper objectMapper = new ObjectMapper();
// 设置可见度
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
// 启动默认的类型
objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
// 序列化类, 对象映射设置
jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
// 设置 value 的转化格式和 key 的转化格式
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setHashKeySerializer(stringSerializer);
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
return redisTemplate;
}
}
分类:
Spring Boot
, Redis日常笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)