1. 简介
Redis是一个非关系型的键值对数据库,常用于做缓存和分布式锁。SpringBoot提供了对Redis的支持,方便我们在项目中使用Redis缓存。
2. Redis配置
2.1 引入依赖
在pom.xml文件中加入以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.2 配置Redis连接信息
在application.properties文件中进行配置:
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=123456
spring.redis.timeout=10000
上面的配置中,我们指定了Redis的主机名、端口号、密码和连接超时时间。
3. Redis缓存使用
3.1 缓存注解
Spring提供了几个注解用于操作Redis缓存:
@Cacheable:标记在方法上,表示该方法支持缓存
@CachePut:标记在方法上,表示该方法修改了缓存
@CacheEvict:标记在方法上,表示该方法清除了缓存
3.2 缓存示例
下面是一个使用Redis缓存的示例:
@Service
public class UserService {
private final UserRepository userRepository;
public UserService(UserRepository userRepository) {
this.userRepository = userRepository;
}
@Cacheable(value = "user", key = "#id")
public User getUserById(Long id) {
return userRepository.findById(id).orElse(null);
}
@CachePut(value = "user", key = "#user.id")
public User updateUser(User user) {
return userRepository.save(user);
}
@CacheEvict(value = "user", key = "#id")
public void deleteUserById(Long id) {
userRepository.deleteById(id);
}
}
上面的代码中,我们使用了三个Redis缓存注解:@Cacheable、@CachePut和@CacheEvict。其中,@Cacheable表示该方法支持缓存,缓存的键值为"id";@CachePut表示该方法修改了缓存,缓存的键值为"user.id";@CacheEvict表示该方法清除了缓存,缓存的键值为"id"。
4. Redis缓存配置
4.1 缓存过期时间
我们可以给缓存设置过期时间,使缓存在一定时间后自动失效。在application.properties文件中进行配置:
spring.cache.redis.time-to-live=3600
上面的配置表示缓存过期时间为3600秒。
4.2 缓存前缀
我们可以给缓存设置前缀,以避免缓存key重复。在application.properties文件中进行配置:
spring.cache.redis.key-prefix=myapp
上面的配置表示缓存key的前缀为"myapp:"。
4.3 缓存序列化
Redis是一种键值对数据库,所以我们需要将Java对象序列化成二进制数据存储到Redis中。Spring提供了多种序列化方法,默认使用的是JdkSerializationRedisSerializer。我们也可以选择其他序列化方法。在application.properties文件中进行配置:
spring.redis.serializer=org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer
上面的配置表示使用Jackson2JsonRedisSerializer进行序列化。
5. 总结
Redis是一个开源的非关系型数据库,常用于做缓存和分布式锁。SpringBoot提供了对Redis的支持,方便我们在项目中使用Redis缓存。本文介绍了Redis的配置和使用方法,并对Redis缓存的配置做了详细说明。