728x90
반응형
# Springboot로 구성된 웹 애플리케이션의 세션을 Redis에 저장하기
세션 클러스터링을 위해서 세션 스토리지를 따로 구성하는 경우가 많다.
대표적인 서비스로 레디스가 존재한다.
# Redis의 특징
Mysql, PostgreSQL, Oracle 등 대부분의 데이터 베이스는 디스크 또는 SSD에 저장하지만 Redis는 서버의 주 메모리에 저장된다. 메모리에 저장되므로 더 빠른 응답속도를 유지할 수 있다.
1. Redis를 docker로 실행하기
- 우분투에서 아래의 명령어로 redis를 docker로 실행한다.
docker pull redis
- redis의 기본포트인 6379번 포트를 활용해 서비스를 실행 시킨다.
sudo docker run -p 6379:6379 redis
- redis docker 컨테이너 내부로 진입한다.
docker exec -it {Container_name} /bin/bash
- 아래의 명령어를 통해 비밀번호를 설정한다.
127.0.0.1:6379> config set requirepass test1234
OK
127.0.0.1:6379> auth test1234
OK
127.0.0.1:6379>
2. 스프링 부트에서 설정 진행
스프링 부트에서 아래와 같이 디펜던시를 추가한다.
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.session:spring-session-data-redis'
application.yml 파일에 레디스 정보를 추가한다.
spring:
redis:
host: localhost
port: 6379
password: test1234
redis-cli에서 세션에 담긴 정보들을 보기 위해 아래와 같이 직렬화 빈을 생성한다.
@Configuration
@EnableRedisHttpSession
public class RedisConfig {
@Bean
public RedisSerializer<Object> springSessionDefaultRedisSerializer() {
return new GenericJackson2JsonRedisSerializer();
}
}
3. 컨트롤러를 생성하고 값을 넣어보자.
@RestController
public class RedisController {
@PostMapping("/session")
public String sessionTest(HttpSession httpSession) {
String id = "test321";
httpSession.setAttribute("sessionID", id);
return "session TEST";
}
}
- 테스트 진행
post맨을 활용하여 해당 url을 호출해보자.
- 호출 url : http://localhost:8088/session
- 결과
- RedisCLI에서 확인하면 아래와 같다.
- 추가로 어떤 값들이 저장되고 확인할 수 있는지 Postman에서 확인해보면 아래와 같다.
추가코드는 위에서 작성한 Controller에 입력해주면 된다.
@GetMapping("/setsession")
public String setsessionAPI() {
String value = "seungkim";
httpSession.setAttribute("KEY", value);
String returnValue = LocalDateTime.now().toString() +
" \nsession set id : " + httpSession.getId() + " \nsession set Value : " + value;
return returnValue;
}
@GetMapping("/getsession")
public String getsessionAPI() {
Random random = new Random();
String value = (String) httpSession.getAttribute("KEY");
String returnValue = LocalDateTime.now().toString() +
" \nsession get id : " + httpSession.getId() + " \nsession get value " + value;
return returnValue;
}
- Postman에서 값을 확인하면 아래와 같다.
/setsession 의 결과는 아래와 같다.
/getsession 의 결과는 아래와 같다.
- 끝 -
728x90
반응형
'DB > Redis (레디스)' 카테고리의 다른 글
예제 애플리케이션에 Login시 Redis와 연동되도록 해보자 (0) | 2023.08.02 |
---|---|
Redis Desktop Manager 접속 방법 (0) | 2022.12.06 |
EC2에 Redis 설치 데이터 생성 및 조회 with BastionHost (0) | 2022.11.25 |