
OAuth를 진행하면서 토큰을 저장해야하는 경우가 생겼는데, 토큰을 생성하고 관리해줄곳을 생각하다보니 하나같이 전부 Redis를 이용해서 토큰을 관리한다고 한다. 그럼 여기서 Redis가 뭘까???
Remote DIctionary Service첫번째는 Disk-Based DB 즉, 메모리를 디스크에 저장하는것이다
예를 들면 흔히들 사용하는 MySQL이 여기에 해당한다.
두번째는 In-memory DB 즉, 데이터를 메모리에 저장하는 것이다.
여기서 메모리는 RAM 혹은 cache를 뜻한다.
디스크는 물리적요소를 직접 사용하기 때문에, 사용자가 많아질수록 부하가 많아져서 느려진다. 이 경우에는 비용적인 면에서 큰 손실로 이루어지기때문에 이때 캐시 서버를 직접 도입해서 사용을 하는데, 여기서 사용할 수 있는게 Redis이다.
캐시는 한번 읽어온 데이터를 임의의 공간에 저장하여 같은 요청이 여러 번 들어오는 경우 매번 데이터 베이스를 거치는 것이 아니라 캐시 서버에서 저장된 결괏값을 바로 내려주기 때문에 DB의 부하를 줄이고 서비스의 속도도 느려지지 않는 장점이 있다.

-> 이러한 이유들을 통해서 개발의 편의성을 높이고 값을 관리하기가 쉬워진다.
싱글 스레드이다.
-> 한번에 하나의 명령만 수행하기때문에 Race Condition이 발생하지 않는다.
✔️ Race condition
공유 자원에 대해 여러 프로세스가 동시에 접근을 시도할 때, 타이밍이나 순서 등이 결과값에 영향을 줄 수 있는 상태
즉, 두개의 스레드가 하나의 자원을 놓고 서로 사용하려고 경쟁하는 상황에서 발생
프로그램의 일관성과 정확성을 손상시킬 수 있음
⠀
Ex.
두개의 스레드 A, B가 X라는 공유변수를 사용하는데, A의 역할은 X에 + 1 후 저장 / B의 역할은 X에 - 1 후 저장일 때
A가 X를 읽은 후 B가 실행되기 전에 결과를 저장한다고 하면, A의 결과가 스레드 B의 결과데 덮어씌워지게 된다.
참고 링크
오픈소스이다.
Redis는 AWS를 포함한 커뮤니티를 통해 지원되는 오픈소스로 다양한 클라이언트에 지원되기 때문에 기술 종속이 없는것이 장점이다.