stateless Http
Stateless Protocol
Http는 Stateless Protocol이다. 따라서 상태를 필요(대표적으로 장바구니,Tracking)로 하는 여러 웹앱에서는 이 상태정보를 유지하기 위한 방법으로 쿠키를 사용한다. 1
Who starts Cookie?
Netscape invented cookies and HTTPS in 1994 2
What is difference Cookies And Session?
Rfc에 정의되어 있는 것이 쿠키(관련 헤더로는 cookies, set-cookie), 세션은 쿠키에 포함되는 개념. 서버의 구현방식이 조금씩 다르지만 , 세션은 Unique한 Id가있음. 만료시간등을 설정 가능.
다중서버에서의 세션관리 3
1. 스티키 - Nginx로 IpHash로 해봤음. Sticky는 유료기능인데, 일부 기능 포함된 소스를 빌드해서 설치하고 실행하면 가능함 4
2. 세션 클러스팅 - 1개의 was에 세션이 생성되면 다른 Was에도 자동으로 동기화되는 것. 대신 메모리 소모가 많음.
3. 세션스토리지 사용.(Rdb는 속도가 느리기에, InMemoryDb인 Redis를 많이사용)
Redis를 세션저장소로 사용해보자.
Spring Boot 에서 Redis 를 사용하는 방법
1. RedisRepository(트랜잭션x)
2. RedisTemplate(트랜잭션o)
그림과 같이 Redis 설정을 yml로 빼와서 하는 경우가 있는데, yml에 있는 설정을 어떻게 빼오는지 궁금해졌다.
YamlPropertySourceLoader.java를 보면된다. SnakeYaml
레디스의 자바 클라이언트 20220623
레디스는 언어별로 다양한 클라이언트 구현체를 가지고 있다. 5
하트표시는 redis.io에서 공식추천하는것. 초록색동그라미는 최근 6개월간 커밋내역이 있는것이다.
Redisson(상용버전과 프리버전따로) vs Jedis 6
의존성
Jedis is almost dependency-free, it requires Apache Commons Pool 2 for connection-pooling.
Redisson requires Netty(비동기), the JCache API and Project Reactor as basic dependencies. It's extensible because it integrates with a lot of other libraries (Tomcat Session store).
레디스는 cli,어플리케이션에서 통제하는데
cli는 말그대로 cli프로그램으로 통제하면 되고 ,
어플리케이션은 클라이언트가 필요
레디스는 gui툴도 있다는 거.
참고문헌
Redis Session Cache Overview - IBM Documentation
- 설명을 보면 WebSeal이 많이 보이는데 , IBM의 웹서버(아파치,Nginx 같은) 제품이름이다.
- 쿠키에는 데이터 개수와 데이터 크기에 대한 제한이 있다. [본문으로]
- Why is it said that "HTTP is a stateless protocol"? - Stack Overflow [본문으로]
- 다중서버에서 세션 관리(Redis 세션 클러스터링, Sticky Session) (tistory.com) [본문으로]
- Nginx 사용하는 옵션 정리 4_(sticky) : 네이버 블로그 (naver.com) [본문으로]
- Clients | Redis [본문으로]
- java - Redisson vs Jedis for redis - Stack Overflow [본문으로]