🌚 부록
지난 시간에는 Redis에 대해서 알아보았다. Redis는 NoSQL의 한 종류이며 Key-Value 형태를 가진다. 지난 시간에는 깃허브 링크를 통해 레디스를 설치하고, 실행보았으며 마지막으로 헬로 월드를 찍는 것으로 마쳤다. Redis에 대해서 조금 더 자세히 알아가보자.
🍕 Redis
가장 먼저 알아볼 것은 문자열이다. 기본적으로 우리가 사용하려고 하는 명령들은 이미 모두 구현이 되어있다. 따라서 지난 시간에 해봤던 set ~, get ~을 통해 데이터를 확인할 수 있다.
당연히 문자열을 합치는 기능인 append도 사용 할 수 있다.
또한 값의 증가, 감소도 처리할 수 있다. increase, decrease 줄여서 incr, decr으로 사용한다.
당연하지만 문자열에는 사용할 수 없는 것을 알 수 있다. (incr user:name) 또한 mset, mget을 이용하면 여러개의 값을 동시에 처리할 수 있다. 이 때 마찬가지로 값이 없는 애를 조회할경우 NULL과 같이 nil이 뜨는 것을 알 수 있다. 그리고 이미 있는 값이라도 덮어쓰기가 가능하다.
🍕 Redis 응용
레디스의 기본적인 문법은 위와 같이 알아보았다. 그렇다면 레디스를 어디에서 응용해 사용할 수 있을까? 레디스는 변수, 즉 키-벨류의 수명시간을 직접적으로 정의할 수 있다. 이 때 사용하는것이 ttl과 expire이다. ttl은 현재 변수의 수명기간을 확인하고, expire는 수명기간을 설정한다.
이를 통해 활용할 수 있는 것이 바로 로그인이다. 로그인의 플로우는 다음과 같다.
1. ID/PW를 치는 로그인(어카운트) 웹 서버 ↔ DB
2. 로그인 성공 시 sessionToken 획득
3. 획득한 sessionToken을 바탕으로 GameServer 접속
그러나 이렇게 될 경우 게임 서버는 이 사람이 진짜로 인증받은 사람인지, 아닌지 구분할 수 없다. 그렇다면 어떻게 처리해야 할까?
방안 1. 웹 서버가 클라에게 응답을 주는 시점에 게임 서버에도 응답을 주어 인증 값을 주는 방법이 있다. 그러나 이 방법은 왔다갔다 통신해야 하기 떄문에 번거롭다.
방안 2. DB에다가 세션 토큰 정보를 넣어버리는 방법이 있다. 따라서 키 'Shung'의 토큰의 벨류값을 'asdf'으로 가지게 한다고 가정한다. 하지만 RDBMS는 로그인 성공 시 유효한 타이밍에 데이터를 설정할 수 없기 때문에 이 때 레디스를 사용한다.
따라서 웹서버 ↔ DB / Redis [Shung : sessionToken]을 통해 직접적으로 통신하는게 아닌, 레디스를 통해 통신한다.
'공부 > 인프런 - Rookiss' 카테고리의 다른 글
Part 6. 웹 서버 (0) | 2024.07.25 |
---|---|
Part 5-4-7. 부록 : Redis 맛보기 #3 (0) | 2024.07.25 |
Part 5-4-5. 부록 : Redis 맛보기 #1 (3) | 2024.07.23 |
Part 5-4-4. 부록 : 트랜잭션 (3) | 2024.07.22 |
Part 5-4-3. 부록 : 대기와 락 (1) | 2024.07.20 |