Redis공식문서에서 권장사항은 주기적으로 snapshot으로 백업하고 다음 snapshot까지의 저장을 AOF방식을 수행하는 것이다.
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
host,port정보는 yml 설정 파일에서 가져옵니다.
@Configuration
@EnableRedisRepositories
@EnableRedisHttpSession
public class RedisConfig {
@Value("${spring.redis.host}")
private String redisHost;
@Value("${spring.redis.port}")
private int redisPort;
@Bean
public RedisConnectionFactory redisConnectionFactory(){
return new LettuceConnectionFactory(redisHost,redisPort);
}
@Bean
public RedisTemplate<String,Object> redisTemplate(){
RedisTemplate<String,Object> redisTemplate=new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory());
redisTemplate.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
return redisTemplate;
}
}
lombok을 사용해서 DI받았습니다.
@RequiredArgsConstructor
@Controller
public class TestController {
private final RedisTemplate<String,Object> redisTemplate;
//test.html 페이지에 접속하는 순간 레디스에 RedisMemberDto객체를 저장합니다.
@GetMapping("/test")
public String index(){
ValueOperations<String,Object> valueOperations=redisTemplate.opsForValue();
RedisMemberDto redisMemberDto=new RedisMemberDto();
redisMemberDto.setAge(10);
redisMemberDto.setName("홍길동");
valueOperations.set("key",redisMemberDto);
return "test";
}
//레디스에서 값을 바로 가져와 리턴합니다.
@GetMapping("/test/student")
@ResponseBody
public RedisMemberDto findStudent(){
ValueOperations<String,Object> valueOperations=redisTemplate.opsForValue();
return (RedisMemberDto)valueOperations.get("key");
}
}