1、pom文件引入相关依赖(这里只贴出缓存功能所需要的依赖)
<!-- 引入缓存依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<!-- 引入spring-data-redis依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.在application.yml中进行配置
#配置redis
spring
redis:
#主机地址,即你的redis安装在哪台机器的IP,默认是localhost
host: localhost
#连接密码
password: 445221
#端口
port: 6379
3、使用@EnableCaching(表明启用缓存功能,要放在配置类或者主启动类上)
4、如果想要使用自定义的cacheManager,需要自己编写配置类,如下
@Configuration
public class RedisConfig {
/**
* 使用自定义的CacheManager
*
* @param factory
* @return
*/
@Primary
@Bean
public CacheManager cacheManager(RedisConnectionFactory factory) {
RedisCacheWriter writer = RedisCacheWriter.nonLockingRedisCacheWriter(factory);
//使用JSON序列化器,当缓存对象,会以json的格式存储
RedisSerializer<Object> serializer = new GenericJackson2JsonRedisSerializer();
RedisSerializationContext.SerializationPair<Object> pair = RedisSerializationContext.SerializationPair.fromSerializer(serializer);
//设置缓存过期时间为3600s,即1h
RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig()
.serializeValuesWith(pair)
.entryTtl(Duration.ofSeconds(3600))
.disableCachingNullValues();
RedisCacheManager cacheManager = new RedisCacheManager(writer, configuration);
return cacheManager;
}
}
5、在方法使用对应的缓存注解,如下
@Service
@Transactional(rollbackFor = Exception.class)
//指定这个类中的缓存名,这样@Cacheable等缓存注解就不用配置缓存名了
@CacheConfig(cacheNames = "userCache")
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
//默认的缓存key为参数名,可以自己设置key属性;
//每次执行这个方法前都会查询缓存中是否有该对象,如果有,不再执行方法;
@Cacheable
public User getByName(String userName) {
User user = userMapper.getByName(userName);
return user;
}
}
PS:2.x版本的配置与1.x版本的配置有所不同,请注意自己使用boot版本,如有错的地方,请指正,谢谢
本文详细介绍了如何在Spring Boot项目中使用缓存功能,包括pom文件中引入所需依赖、在application.yml中配置Redis、使用@EnableCaching开启缓存、自定义CacheManager以及在业务方法中应用缓存注解。
1万+

被折叠的 条评论
为什么被折叠?



