https://github.com/tporadowski/redis/releases

 

Releases · tporadowski/redis

Native port of Redis for Windows. Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Se...

github.com

.zip 압축을 풀고 sever 를 실행시킨다음 cli.exe 로 클라이언트에서 테스트 해볼 수 있다

 

 

서버

 

클라 기본 상태

 

key1 으로 값 hello world를 저장

 

 

get 으로 가져올 수 있다

 

즉 이렇게 메모리상에 들고 있게 되는 것이다

 

 

서버를 끄고 get 을 요청하면 아무 일도 일어나지 않게 된다, 데이터도 역시 날라가게 된다

 

 

다시 서버를 키고 get 을 해보면 nil 이 나온다

 

set user:name "abc"

 

get user:name

"abc"

 

이렇게 나오고

append user:name " is good"

get user:name

"abc  is good"

 

이 된다

 

 

incr : 11은 문자인데 문자를 숫자로 인식하여 1을 증가한다음 12로 찍는 명령어

 

 

mset, mget  : 여러개를 설정하거나 가져올 수 있는 것

 

 

기존 키 값을 set 으로 다시 쓰게 되면 덮어써지게 된다

 

 

ttl : 유효 시간이 얼만나 남았는지 확인, -1 , 이면 무한대를 말한다

expire : 유효시간 설정

 

 

 

유효시간을 설정하고 ttl 을 호출하면 남은 시간을 볼 수 있다

 

서버에서 세션에 대한 정보를 DB 에서도 처리 할 수 있다

먼저 ID 와 pw 가 맞는지는 웹서버에서 검증한다 그리고 이 유저가 맞는지는 DB 를 통해서 인증을 거치는데

인증을 통과했다면 인증 받은 사람이라는 토큰을 클라에게 전달해준다

 

username:세션ID 를 하나의 컬럼에 설정한다음 유효시간을 별도로 설정한다

세션 id 가 존재하는지에 대해선 username 의 세션 ID를 확인하여 존재하는 유저인지 알 수 있고

관계형 DB 에선 이렇게 username 의 세션 ID를 클라에게 던져주는 형태가 된다

즉 클라가 서버에 다시 뭔가 할때 세션ID를 던진다

 

이렇게 되면 매번 서버와 DB 를 왔다갔다 하며 유효시간을 별도로 설정해줘야 한다는 것등의 별도의작업 및

불필요한 비용이 발생 할 수 있다 어차피 세션 ID가 서버에선 유효한 값 이므로
(클라에서 변조된것인지 서버에서만 판단해 주면 됨으로) 이때 redis 가 좋은대안이 될 수 있다

 

 

 

 

반응형

+ Recent posts