SpringBoot整合Redis
- SpringBoot操作数据: spring-data jpa jdbc mongodb redis
- SpringData也是和SpringBoot齐名的项目!
- 说明︰在 SpringBoot 2.x 之后,原来使用的 jedis 被替换为了 lettuce?
- jedis : 采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用 jedis pool 连接池! BIO
- lettuce: 采用 netty,实例可以再多个线程中进行共享,不存在线程不安全的情况!
NIO
源码:
- SpringBoot 所有的配置类,都有一个自动配置类 Redis AutoConfiguration
- 自动配置类都会绑定一个 properties 配置文件 RedisProperties
@Bean
@ConditionalOnMissingBean( //我们可以自定义 Template 替换掉 RedisTemplate
name = {"redisTemplate"}
)
@ConditionalOnSingleCandidate(RedisConnectionFactory.class)
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
//默认的 RedisTemp1ate 没有过多的设置,redis 对象都是需要序列化!
//两个泛型都是 object,object的类型,我们后使用需要强制转换<string,object>
RedisTemplate<Object, Object> template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
@Bean
@ConditionalOnMissingBean
@ConditionalOnSingleCandidate(RedisConnectionFactory.class)
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
//由于 string 是redis中最常使用的类型,所以说单独提出来了一个bean !
StringRedisTemplate template = new StringRedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
整合:
- 导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
- 配置(
application.properties
)
# 配置redis
spring.redis.port=6379
# 本地 ip 222.20.79.105
spring.redis.host=222.20.79.105
- 注入,启动
package com.allen.redis02springboot;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
@SpringBootTest
class Redis02SpringbootApplicationTests {
@Autowired
private RedisTemplate redisTemplate;
@Test
void contextLoads() {
// opsForValue() 操作字符串方法
redisTemplate.opsForValue().set("k1","v1");
}
}