[백업][가리사니] 스프링 부트 레디스 세션 연동
redis, spring
이 문서는 가리사니 개발자 포럼에 올렸던 글의 백업 파일입니다. 오래된 문서가 많아 현재 상황과 맞지 않을 수 있습니다.
스프링 부트 세션 시리즈
서론
이번엔 저번에도 소개한적있는 key-value 데이터베이스 레디스를 스프링세션에 연동하는 강의를 써보도록 하겠습니다. 레디스 소개 : 윈도우에서 Redis (레디스) 설치
레디스 설치
데비안 계열 (우분투등..)
> sudo add-apt-repository ppa:chris-lea/redis-server
> sudo apt-get update
> sudo apt-get install redis-server
> sudo vim /etc/redis/redis.conf
- vim 을 예제로.. 적당히 설정을 보고 고쳐줍니다.
- 특별히 설정을 하지 않아도 됩니다. -필자도 포트정도만.. 윈도우 https://github.com/MSOpenTech/redis/releases
- 다운받아 설치 기타 리눅스/유닉스등.. http://redis.io/download
레디스 데스크탑 매니저
레디스 GUI 관리 툴 입니다.
- 설치 : https://redisdesktop.com/ 접속해보시면 db0 부터 db15까지 16개의 데이터베이스가 있습니다.
메이븐 설정
<!-- 스프링 세션 -->
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session</artifactId>
<version>1.2.1.RELEASE</version>
</dependency>
<!-- 스프링 레디스 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
</dependency>
properties 설정
필자는 db관련 프로퍼티는 별도로 저장하기 때문에 application.properties 가 아닌 프로젝트/src/main/resources/database.properties 에 저장하였습니다.
#레디스
redis.host: 호스트
redis.port: 포트
redis.database: 데이터베이스번호(위 매니저에서봤던 0~15범위내 숫자[데이터베이스번호])
세션설정
@Configuration
@EnableRedisHttpSession
@PropertySource("classpath:database.properties")
public class SessionConfig
{
@Value("${redis.host}")
String host;
@Value("${redis.port}")
int port;
@Value("${redis.database}")
int database;
@Bean
public JedisConnectionFactory connectionFactory()
{
JedisConnectionFactory conn = new JedisConnectionFactory();
conn.setHostName(host);
conn.setPort(port);
conn.setDatabase(database);
conn.setUsePool(true);
return conn;
}
@Bean
public CookieSerializer cookieSerializer()
{
DefaultCookieSerializer serializer = new DefaultCookieSerializer();
// 위 레디스 처럼 serializer 의 각종 설정 가능.
// tomcat context 로 설정한 쿠키 기능들도 여기서 설정가능.
return serializer;
}
}
테스트
세션 스코프빈은 다음 강의에서 할 예정이니 HttpSession 을 사용해보겠습니다.
@Controller
public class UsingSessionTestController
{
@ResponseBody
@RequestMapping(path="/session-test", produces="text/plain")
public String sessionTest(HttpSession session)
{
session.setAttribute("test", "hello");
return (String)session.getAttribute("test");
}
}
- /session-test 에 접속합니다.
- 레디스 매니저로 조회하여봅니다.
- 해더 Cookie: 와 일치하는 세션아이디가 보이면 성공!