클라우드 환경에서의 session 유지처리 Spring session redis 클라우드 환경에서의 session 유지처리 작성자 : 이승환 블로그 : http://handcoding.tistory.com
redis란 Redis 연동방법 NoSQL 계열의 메모리기반 db이며 session정보처리에 적합하다. Spring redis 연동 Tomcat redis 연동 2가지 방법이 있다.
우분투 redis server 설치 sudo add-apt-repository ppa:chris-lea/redis-server sudo apt-get update sudo apt-get install redis-server
Redis server 설정 sudo nano /etc/redis/redis.conf 접근 ip주소 설정 port 설정 password 설정 재시작 sudo service redis-server restart
Redis 접속 확인 redis-cli –h 127.0.0.1 tool에서 확인 https://redisdesktop.com/
Spring redis 설정 dependency <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> <version>1.3.1.RELEASE</version> <type>pom</type> </dependency> <groupId>biz.paluch.redis</groupId> <artifactId>lettuce</artifactId> <version>3.5.0.Final</version>
Spring redis 설정 redis-context.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring- context-4.0.xsd"> <context:annotation-config /> <bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/> <bean class="org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory" p:host-name=“host" p:port="6379" p:database="0" p:password=“비밀번호"/> </beans>
Spring redis 설정 web.xml <context-param> </context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring/appServlet/redis-context.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
Spring redis 설정 web.xml <filter> </filter> <filter-name>springSessionRepositoryFilter</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <url-pattern>/*</url-pattern> </filter-mapping>
사용 springSessionRepositoryFilter 통해 redis session교체되기때문에 기존에 쓰던방식되로 쓰면 된다. session.setAttribute(“key”, Object);
주의 DelegatingFilterProxy가 spring 버전에 따라 없을 수도 있기때문에 확인해야된다. Redis 에 저장시 해당 객체를 직렬화를 통해 저장하기때 문에 저장하고자하는 vo,dto 객체에 Serializable 구현해 야된다.