网站建好后,西平企业网站建设,电商怎么做账,杭州网站优化排名SpringBoot整合Redis 1、SpringBoot整合redis1.1 pom.xml1.2 application.yml1.3 配置类RedisConfig#xff0c;实现RedisTemplate序列化1.4 代码测试 2、SpringBoot整合redis几个疑问#xff1f;2.1、Redis 连接池讲解2.2、RedisTemplate和StringRedisTemplate 3、RedisTemp… SpringBoot整合Redis 1、SpringBoot整合redis1.1 pom.xml1.2 application.yml1.3 配置类RedisConfig实现RedisTemplate序列化1.4 代码测试 2、SpringBoot整合redis几个疑问2.1、Redis 连接池讲解2.2、RedisTemplate和StringRedisTemplate 3、RedisTemplate 1、SpringBoot整合redis
1.1 pom.xml dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdjunit/groupIdartifactIdjunit/artifactIdscopetest/scope/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactId/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency!--redis相关依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependencydependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactId/dependency/dependencies1.2 application.yml
server:port: 8080spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: rooturl: jdbc:mysql://127.0.0.1:3306/alarm?useUnicodetrueautoReconnecttruefailOverReadOnlyfalsecharacterEncodingUTF-8allowMultiQueriestrueuseSSLfalseserverTimezoneAsia/ShanghaizeroDateTimeBehaviorCONVERT_TO_NULLredis:host: 127.0.0.1port: 6379password:database: 0timeout: 1000mslettuce:pool:max-active: 8 # 连接池最大连接数max-idle: 8 # 连接池最大空闲连接数min-idle: 0 # 连接池最小空闲连接数max-wait: -1ms # 连接池最大阻塞等待时间负值表示没有限制mybatis:type-aliases-package: cn.yx.zg.pojomapperLocations: classpath:mappers/*.xml1.3 配置类RedisConfig实现RedisTemplate序列化
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
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;
import org.springframework.data.redis.serializer.StringRedisSerializer;
/*** redisConfig** author zhanggang* since 2023/11/18 19:15*/
Configuration
public class RedisConfig {Beanpublic RedisTemplateString, Object redisTemplate(RedisConnectionFactory factory) {RedisTemplateString, Object template new RedisTemplate();RedisSerializerString redisSerializer new StringRedisSerializer();Jackson2JsonRedisSerializer jackson2JsonRedisSerializer new Jackson2JsonRedisSerializer(Object.class);ObjectMapper om new ObjectMapper ();om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);template.setConnectionFactory(factory);//key序列化方式template.setKeySerializer(redisSerializer);//value序列化template.setValueSerializer(jackson2JsonRedisSerializer);//key hashmap序列化template.setHashKeySerializer (redisSerializer);//value hashmap序列化template.setHashValueSerializer(jackson2JsonRedisSerializer);return template;}
}
1.4 代码测试 经过上面三个步骤的配置已经把Redis和SpringBoot整合好了使用下面代码既可以操作Redis了。
import cn.yx.zg.SpringBootMybatisApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;/*** author zhanggang* since 2023/11/21 10:29*/
SpringBootTest(classes SpringBootMybatisApplication.class)
RunWith(SpringRunner.class)
public class RedisTest {Autowiredprivate RedisTemplate redisTemplate;Autowiredprivate StringRedisTemplate stringRedisTemplate;Testpublic void testRedis01() {redisTemplate.opsForValue().set(name, zg);}
}2、SpringBoot整合redis几个疑问
2.1、Redis 连接池讲解 Redis 的客户端常用的有两种Jedis 和 Lettuce。 Spring Boot 1.5.x 版本默认的 Redis 客户端实现上是直接连接 Redis Server如果在多线程环境下是非线程安全的这时候要使用连接池为每个 jedis 实例增加物理连接 LettuceSpring Boot 2.x 版本后默认的 Redis 客户端基于 Netty 实现连接实例可以在多个线程间并发访问一个连接实例不够的情况下也可以按需要增加连接实例。 上面代码是实现了Lettuce连接池直接哪来用就行。如下图通过debug可以看出是使用了Lettuce连接池。 2.2、RedisTemplate和StringRedisTemplate RedisTemplate实际就是类似java的jdbc封装了对redis操作的一些方法。 在1.3 新建配置类RedisConfig中我们给RedisTemplate进行了序列化为什么要序列化呢如果不序列化我们通过RedisTemplate存到redis的数据都是是二进制存储的。你只用把我那个配置直接哪来用就可以了。 StringRedisTemplate一般只用来存储key和value都是String类型当存入对象时会报错 can not cast into String。RedisTemplate则是既可以存字符串又可以存对象一般我们都使用RedisTemplate就够用了。
3、RedisTemplate