[WEB] Redis



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는 이렇게 동작해요

로그인하지 않은 사용자가 로그인된 사용자만 접근 가능한 페이지 접근할 때

  1. redis 탐색 : session 없음.
  2. 그렇다면 서버와 통신하여 로그인한뒤 세션값을 받아서 redis에 저장


로그인한 사용자가 다른 로그인된 사용자만 접근 가능한 페이지 접근할 때

  1. redis 탐색 : session 있음. 서버와 통신하지 않고 바로 접근 허용



이렇기 때문에 휘발성이면서 캐싱된 적이 있는 데이터라면 서버와 통신하는 것보다 redis에서 먼저 걸러지는게 무조건적으로 빠르다고 볼 수 있다!!