개발/Spring

[Spring Boot] Spring Boot 1.5.7 에서 Redis 사용하기

hojak99 2017. 12. 6. 00:53

Spring Boot 1.5.7 에서 Redis 를 사용해보았다. Redis in-memory 기반으로 NoSQL DBMS 로 분류된다 한다. 캐쉬관리적인 측면에서 좋다고 한다. RestFul Server 에서는 무상태로 동작하는게 원칙이기 때문에 이 Redis를 사용한다고 한다. 자세한 이야기는 다음에~




Maven 기반으로 프로젝트를 생성하고 Redis 사용하려고 했는데 자꾸 ClassNotFound 관련 뭐 이런저런 오류가 많이 터졌다. 노트북을 터칠 뻔 했다.


아마 내 생각엔 Maven dependency 가 제대로 받아오지 않는 것 같았다. 그래서 직접 jar 다운로드해서 추가해줬다.



내가 추가해주었던 라이브러리들은 [jedis-2.9.0.jar], [commons-pool2-2.4.3.jar] 이다. 


// application.properties

spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.password=


다음과 같은 코드를 application.properties 에 추가해준다. Redis 서버와 연결시키기 위한 준비이다. 우선 Redis 서버를 켜놓아야 하겠죠? ㅎㅎ



import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericToStringSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

@PropertySource("classpath:application.properties")
@Configuration
@EnableRedisHttpSession
public class RedisConfig {
	
	@Bean
    public JedisConnectionFactory redisConnectionFactory() {
		 JedisConnectionFactory conn = new JedisConnectionFactory();
		 conn.setHostName("127.0.0.1");
		 conn.setPort(6379);
		 conn.setUsePool(true);

		 return conn;
    }
} 


해당 클래스를 하나 생성해준다. 여기서 @EnableRedisHttpSession 어노테이션은 스프링 세션을 스프링 부트의 레디스 연결을 지원하도록 해주는 어노테이션이다. 꼭 추가해줘야 한다.


근데 어떤 블로그는 Spring boot 메인 클래스인 Application.class 에서 해당 어노테이션을 추가하고 어느 블로그에서는 Config 클래스에만 추가해놓길래 난 그냥 둘 다 추가해줬다.



이제 세션이 Redis 세션인지 확인해야 한다. 


그냥 컨트롤러 메소드 하나 만들어서 "/" 로 RequestMapping 해주고, request 에 대한 session 의 id 를 출력해주자. 처음에 한 번 출력하고 나서 해당 서버를 restart 해주고 다시 출력을 해보면 서버를 껐다 켜도 해당 session id 는 같다고 출력이 된다. 왜냐하면 Redis DB 에서 해당 세션을 가지고 있기 때문이다.



코드 작성이 1시간이라면, 난 Redis 셋팅이 하루 걸렸다. 

반응형