Add spring-boot- starter-redis dependency to your pom file:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
</dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
</dependency>
Set Redis config in application.yml:
spring:
redis:
host: localhost
port: 6379
Set Redis Template, Cache Manager and @EnableCaching:
@SpringBootApplication
@EnableCaching
public class SpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootApplication .class, args);
}
@Bean
public RedisTemplate
RedisTemplate
redisTemplate.setConnectionFactory(jedisConnFactory);
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
return redisTemplate;
}
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate);
redisCacheManager.setUsePrefix(true);
Collection cacheNames = new ArrayList<>();
cacheNames.add("user-accounts-cache");
redisCacheManager.setCacheNames(cacheNames);
Map expires = new HashMap<>();
expires.put("accounts-cache", 30L);
redisCacheManager.setExpires(expires);
return redisCacheManager;
}
}
Decorate method for caching;
@Cacheable(value = "user-accounts-cache")
public List getUserAccounts(String userId) {
return accountDao.getAccounts(userId);
}