Spring boot에서 Redis 사용법

구본식·2023년 1월 6일
0
post-thumbnail

1.1 gradle

//Redis cache
	implementation 'org.springframework.boot:spring-boot-starter-data-redis'

1.2 .yml

#Redis Cache
spring: 
  redis:
    host: localhost
    port: 6379

1.3 config

@Configuration
public class RedisConfig {

    @Value("${spring.redis.host}")
    private String host;

    @Value("${spring.redis.port}")
    private int port;

    @Bean
    public RedisConnectionFactory redisConnectionFactory() {
        return new LettuceConnectionFactory(host, port);
    }

    @Bean
    public RedisTemplate<?,?> redisTemplate() {
        RedisTemplate<?,?> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory());
        return redisTemplate;
    }
}

.yml에 작성한 redis 서버 호스트(localhost)와 포트번호(port)를 @Value를 이용해 Redis 서버연결에 사용한다.

Jedis, Lettuce
Java의 Redis Client는 Jedis, Lettuce가 있다고 한다. Spring boot 2.0에서 부터는 Lettuce가 탑재되어 있다고 한다. 나중에 좀더 공부해야겠다🤣

Spring Boot에서 Redis Cache를 사용하는 방법으로는 크게 RedisRepositoryRedisTemplate가 있다. 이번 프로젝트에서는 RedisTemplate를 사용해 볼 예정이다.

RedisTemplate이 특정 Entiry뿐만 아니라 원하는 여러가지 타입(자료형)을 넣을수 있다고 한다.
RedisTemplate를 선언한후 원한는 Key, Value 타입에 맞게 Operations(String,Hash,Set등)를 선언하여 사용할수 있다는 장점이 있다.

위에서 보면 RedisTemplate<?,?>와 같이 선언을 하여 RedisTemplate을 주입받을때 원하는 Key,Value 타입을 지정하여 주입받을수 있게 하였다.


1.4 Redis Window 다운로드

build.gradledependencies만 적용하게 되면 redis 사용할수 있을줄 알았지만 별도의 설치를 해야지만 가능했다.

https://github.com/microsoftarchive/redis/releases
위 깃허브 주소에서 Redis-x64-3.0.504.msi를 다운받는다.

배포시(AWS EC2) 마찬가지로 배포서버(리눅스)에 Redis를 설치해야된다. 아래 링크를 통해 참고하였다. 너무 번거롭다 ㅠㅠ 나중에 Docker를 사용해서 이러한 번거러움을 해결해야지🤣
https://monynony0203.tistory.com/107


1.5 Test

@SpringBootTest
public class RedisTest {

    @Autowired private RedisTemplate<String ,String> redisTemplate;

    @Test
    public void testStrings() throws Exception {

        //given
        ValueOperations<String, String> valueOperations = redisTemplate.opsForValue();
        String key = "accessToken";

        //when
        valueOperations.set(key, "test");

        //then
        String value = valueOperations.get(key);
        Assertions.assertThat(value).isEqualTo("test");
    }
}

Redis Cache에 값이 정상적으로 들어갔는지를 간단히 테스트 하기 위해 opsForValue()를 통해 String Operations만을 테스트 해보았다.

Set, Hash등 다양한 자료구조의 Operations이 존재한다.

profile
백엔드 개발자를 꿈꾸며 기록중💻

0개의 댓글