Spring Boot에서 Redis를 사용하려면 먼저 의존성을 추가해줘야 되는데, Spring Data Redis를 추가해주면 된다.
이후 EC2에 설치한 redis-server에 접속하기 위한 정보를 application.properties에 적어준다.
spring.data.redis.port=6379
spring.data.redis.host=3.27.115.170
spring.data.redis.password=1234
이와 같이 해주면 된다.
Config 설정
@Configuration
public class RedisConfig {
@Value("${spring.data.redis.host}")
private String host;
@Value("${spring.data.redis.port}")
private String port;
@Value("${spring.data.redis.password}")
private String password;
@Bean
//redis-server에 연결하기 위한 Bean 객체 생성
public RedisConnectionFactory redisConnectionFactory() {
RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
//연결을 위한 정보 설정
redisStandaloneConfiguration.setHostName(host);
redisStandaloneConfiguration.setPort(Integer.parseInt(port));
redisStandaloneConfiguration.setPassword(password);
return new LettuceConnectionFactory(redisStandaloneConfiguration);
}
@Bean
public RedisTemplate<String, String> redisTemplate() {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
//setConnectionFactory을 통해 연결하고자 하는 redis-server 설정
redisTemplate.setConnectionFactory(redisConnectionFactory());
//직렬화를 통해 자바에서 사용한 값 그대로 redis에 저장하도록 해준다. 이를 빼면 이상한 값이 붙게 된다.
//객체에서 json으로 직렬화와 같은 것을 생각하면 된다. 즉, 직렬화는 해당 프로그램에 맞게 번역해주는 것을 말한다.
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new StringRedisSerializer());
return redisTemplate;
}
}
Controller 설정 보통 RedisService에서 로직을 짜준다.
@RestController
@RequiredArgsConstructor
public class RedisController {
private final RedisTemplate<String, String> redisTemplate;
@PostMapping("/redis/add")
public String addData(@RequestBody DataDto dataDto){
//opsFor~~()메소드를 통해 받아온 인터페이스로부터 직렬화와 역직렬화로 데이터를 redis로 전송하거나 받아옴
ValueOperations<String, String> valueOperations = redisTemplate.opsForValue();
valueOperations.set(dataDto.getKey(), dataDto.getValue());
return "ok";
}
@GetMapping("/redis/get/{id}")
public DataDto getData(@PathVariable String id){
ValueOperations<String, String> valueOperations = redisTemplate.opsForValue();
String value = valueOperations.get(id);
DataDto dataDto = new DataDto();
dataDto.setKey(id);
dataDto.setValue(value);
return dataDto;
}
@GetMapping("/redis/get/{id}")
public void deleteData(@PathVariable String id){
redisTemplate.delete(id)
}
}
만약 Lists나 Sets를 사용하고 싶으면 opsForList(), opsForSet()을 사용하면 된다.
opsForList()로 불러온 객체는 left와 right를 나누어서 데이터를 넣거나 꺼낼 수 있다.
'Database > Redis' 카테고리의 다른 글
Redis 디자인 방법론 (0) | 2024.09.19 |
---|---|
String 타입 명령어 (0) | 2024.09.19 |
Redis 기초 (0) | 2024.09.19 |
PipeLine (0) | 2024.08.26 |
Spring Boot Redis 캐싱 전략 (0) | 2024.08.07 |