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

+ Recent posts