Spring boot 集成Redis
背景
Spring boot开发项目时,难免会需要redis的加持,比如登录信息要存redis、一些热点数据的缓存、使用redis实现分布式锁,使用redis过滤前端数据实现幂等性等等。
一,引入依赖
本次我使用的是Spring boot2.7.18版本,加入如下依赖就可以了。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.7.18</version>
</dependency>
二,yml配置redis
yml配置比较简单,配置redis的host,port,以及连接池的信息就可以了。
spring:
redis:
database: 1
host: 127.0.0.1
port: 6379
password: # 密码(默认为空)
timeout: 6000ms # 连接超时时长(毫秒)
lettuce:
pool:
max-active: 1000 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 10 # 连接池中的最大空闲连接
min-idle: 5 # 连接池中的最小空闲连接
三,使用
首先要配置RedisTemplate,如下所示。配置好了会,就可以通过RedisTemplate操作redis了。
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<String, String> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
template.setKeySerializer(new StringRedisSerializer());
template.setValueSerializer(new StringRedisSerializer());
return template;
}
}
4,redis操作类
直接使用RedisTemplate操作redis有点不方便,所以就写一个redis操作类。因为目前我只用了redis的get和set,所以就封装了这两个,如果你有别的需求,可以继续封装。
@Component
public class RedisUtils {
@Autowired
private RedisTemplate<String, String> redisTemplate;
public void set(String key, Object value) {
redisTemplate.opsForValue().set(key, JSON.toJSONString(value));
}
public void set(String key, Object value,Long time) {
redisTemplate.opsForValue().set(key, JSON.toJSONString(value));
redisTemplate.expire(key,time,TimeUnit.SECONDS);
}
public <T> T get(String key, Class<T> tClass) {
String s = redisTemplate.opsForValue().get(key);
return JSON.parseObject(s,tClass);
}
}
上面代码用到了fastjson,需要引入如下依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>
总结
Spring boot 集成redis是相当简单的,只需要上面的步骤就可以轻松完成。