Redis(Remote Dictionary Server)
개념
- 다수의 서버가 공유하는 해시테이블
- 각각의 서버 안에 로컬하게 존재하는 것이 아니라, 개별적인 원격상 존재해 다수의 서버가 공통 사용
- 애플리케이션에서 세션을 활용하면 사용자가 로그인한 상태를 유지하고, 특정 요청에 대한 정보 저장
특징
- 오픈소스 인메모리 데이터 저장소
- 싱글 스레드 기반
- 클러스터 모드 지원
- 휘발성 데이터를 저장하지만 RDB와 AOF라는 특성을 통해 안전하게 영속적 관리
- Pub/Sub과 같은 기술이 자체적으로 구현
RDB(RedisDataBase)
-> 특정 기간 스냅샷을 생성하는 기술
-> 장애가 발생하면 특정 시점에 스냅샷으로 빠르게 캐시를 되돌리거나 동일한 데이터를 가진 캐시를 복제
-> 스냅샷의 특성상 스냅샷이 생성되기 이전의 일부 데이터는 유실 위험
AOF(AppendOnlyFile)
-> 레디스에 적용되는 write 작업을 모두 log로 저장하는 방식
흐름
- 클라이언트 요청
-> 사용자가 웹사이트에 접속하여 로그인 등의 요청을 보냄
-> 브라우저는 쿠키를 포함할 수도 있고, 포함하지 않을 수도 있음
- 서버 세션 생성
-> 서버는 해당 사용자에 대한 고유 세션 생성
-> 세션 데이터를 저장소에 저장
- 클라이언트에게 세션 ID 전달
-> 서버는 세션 ID를 응답의 Set-Cookie 헤더를 통해 클라이언트에게 전달
-> 클라이언트는 이를 쿠키에 저장
- 클라이언트의 이후 요청
-> 클라이언트가 요청을 보낼 때, 저장된 세션 ID가 포함된 쿠키를 함께 전송
세션 테스트
로컬
wsl --install ##레디스 실행환경을 위한 작업
redis-cli ##레디스 실행
KEYS * ##현재 저장된 세션 값들
flushall ##기존 세션값 모두 지우기

- 이런 식으로 세션 ID값이 생성
- WAS쪽에서도 세션 ID값이 동일한 것으로 확인
개인적인 생각
- 웹브라우저 쿠키 세션 ID값과 Redis 세션 ID값, WAS 세션 ID값을 다 확인한 결과, 웹브라우저만 구조값이 달랐음
- 무작정 이유를 찾아보아도 떠오르는 해결방법이 없었음
- yml설정파일에 구조도 맞춰보고 이름도 변경했지만 별 다른게 없었음
- 이유는 ?
- 찾아본 결과 디코딩 해야 했음
- 브라우저 값을 디코딩하면 세션과 동일한 값이 나옴
- 결국 세개의 값은 모두 동일
참고자료
https://cobinding.tistory.com/234#Redis%20%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0-1