学SpringBoot 2.7 .2实战基础 - 09 - 集成 Redis & 异步任务
1 集成Redis
《docker 安装 MySQL 和 Redis》一文已介绍如何在 Docker 中安装 Redis,本文就看看 SpringBoot 如何整合 Redis。SpringBoot 提供了整合 Redis 的 starter,使用非常简单。
1.1 添加依赖
在 pom.xml 中添加 redis 的 starter:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
1.2 配置 Redis
修改 application.yml 文件,添加 Redis 的配置:
spring:
redis:
host: 127.0.0.1
port: 6379
username:
password:
timeout: 5000
jedis:
pool:
max-active: 3
max-idle: 3
min-idle: 1
max-wait: -1
1.3 添加配置
在 com.yygnb.demo.config
中创建 RedisConfig
,处理一些中文乱码问题。
com.yygnb.demo.config.RedisConfig
:
@Configuration
public class RedisConfig {
private final RedisTemplate redisTemplate;
public RedisConfig(RedisTemplate redisTemplate) {
this.redisTemplate = redisTemplate;
}
/**
* 解决redis插入中文乱码
* @return
*/
@Bean
public RedisTemplate<Serializable, Object> redisTemplateInit() {
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringRedisSerializer);
redisTemplate.setHashKeySerializer(stringRedisSerializer);
GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
redisTemplate.setValueSerializer(genericJackson2JsonRedisSerializer);
redisTemplate.setHashValueSerializer(genericJackson2JsonRedisSerializer);
return redisTemplate;
}
}
1.4 封装 Redis 操作
可封装一些 Redis 的常见操作。
com.yygnb.demo.utils.RedisUtils
:
@RequiredArgsConstructor
@Component
public class RedisUtils {
private final RedisTemplate redisTemplate;
/**
* 指定缓存失效时间
* @param key
* @param time 单位 秒
*/
public void expire(Serializable key, long time) {
if (time > 0) {
redisTemplate.expire(key, time, TimeUnit.SECONDS);
}
}
/**
* 根据key 获取过期时间
* @param key 键 不能为null
* @return 时间(秒) 返回0代表为永久有效