[WEB] Redis
in WEB on Web
Redis 란?
- Remote Dictionary Server의 약어
- 메모리 기반의 key-value Store
- Cassandra나 HBase와 같이 NoSQL DBMS로 분류
- 또한 memcached와 같은 In memory 솔루션으로 분류되기도 함
램상(인메모리캐시상)에서 데이터를 정의하여 기존의 하드디스크에서 데이터를 접근하는 것보다 매우 빠른 실행 속도를 보장받을 수 있는것.
즉, 데이터를 db에 저장하여 서버와 통신한 뒤 그 데이터를 확인하는 것보다 ram에 저장함으로써 시간을 단축시킬 수 있는 것이다.
그렇다면 언제나 RDBMS보다 좋을까?
아니다.
redis는 휘발성 데이터를 램처럼 사용하는 것이다. 즉 redis 서버가 초기화되면 redis에 저장된 데이터가 모두 초기화된다. 그러므로 redis는 초기화되어도 되는 데이터만 사용해야 한다. 즉. 중요한 정보, 삭제되면 안되는 데이터는 사용하면 안된다.
redis의 좋은 활용 예시
session 이다.
- 세션은 초기화가 되어도 상관 없는 데이터이다. (새로 생성하면 되고, 어차피 로그인할때 자동생성, 로그아웃할때 자동삭제되는 데이터이므로 크리티컬하진 않다.)
- 보통 세션은 서버사이드(백엔드)에서 데이터를 저장한다. 클라이언트는 세션 인증이 필요할때마다 서버와 소통하여 인증을 받아내야만 한다.(1초전에 인증을 받았더라도!)
- 하지만 redis를 활용하면 서버와 인증을 하지 않고 그 전에 바로 인증을 받을 수 있으므로 시간이 절약된다.
- key-value 로 관리되는 데이터에 효과적
redis는 이렇게 동작해요
로그인하지 않은 사용자가 로그인된 사용자만 접근 가능한 페이지 접근할 때
- redis 탐색 : session 없음.
- 그렇다면 서버와 통신하여 로그인한뒤 세션값을 받아서 redis에 저장
로그인한 사용자가 다른 로그인된 사용자만 접근 가능한 페이지 접근할 때
- redis 탐색 : session 있음. 서버와 통신하지 않고 바로 접근 허용
이렇기 때문에 휘발성이면서 캐싱된 적이 있는 데이터라면 서버와 통신하는 것보다 redis에서 먼저 걸러지는게 무조건적으로 빠르다고 볼 수 있다!!