Redis

2023. 6. 27. 19:08· I leaned/Etc
목차
  1. Redis란?
  2. 왜 필요한가?
  3. Redis의 특징
  4. Redis사용시 주의점

Redis란?

Key, Value 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터 베이스 관리 시스템 (DBMS)이다.

데이터베이스, 캐시, 메세지 브로커로 사용되며 인메모리 데이터 구조를 가진 저장소이다.

왜 필요한가?

  1. 데이터베이스는 물리디스크에 직접 쓰기 때문에 데이터가 쉽게 손실되지 않는다.
  2. 하지만 사용자가 많아질수록 부하가 많아져 느려질 수 있다.
  3. 캐시를 이용하여 데이터베이스의 과부화를 막을 수 있다.
  4. jwt방식으로 로그인기능 구현시 보다 Refresh토큰과 로그아웃을 효율적으로 구현할 수 있다.
    1. jwt방식은 만료시간이 적힌 입장 티켓을 클라이언트에게 발급해주는 방식이다.
    2. 이 방식은 한번 발급해주면 서버에서는 더이상 토큰내용을 수정할 수 없다.
    3. 그래서 access토큰(짧은 만료시간), refresh토큰(일반적으로 만료시간이 김, 이 토큰을 이용하여 access토큰을 재발급, 앱 자동로그인기능구현시 필요) 두가지 토큰을 동시에 발급을 해준다. - refresh토큰(cf.로테이션 방식:refresh토큰은 1회용)을 통해 어느정도 jwt의 단점(토큰탈취)을 극복할 순 있지만 결국 트레이드오프이다.(보안vs편의)
    4. refresh토큰과 로그아웃(블랙리스트 등의 방법)을 구현하려면 데이터베이스가 필요하다.
    5. 데이터베이스로 구현을 하게 되면 부하가 많이 걸릴 수 있다. 또한 느려질 수 있다.
    6. 이에 대한 대처법이 Redis가 될 수 있다.

Redis의 특징

  • Key, Value 구조이기 때문에 쿼리를 사용할 필요가 없다.
  • 데이터를 디스크에 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 속도가 빠르다.
  • String, List, Set, Sorted Set, Hash 자료구조를 지원한다.
  • Single Treaded이다.
    • 한번에 하나의 명령만 처리할 수 있다. 그렇기 때문에 중간에 처리시간이 긴 명령어가 들어오면 뒤의 명령들은 대기상태가 된다. (get,set명령어의 경우 초당 10만개이상처리할 수 있다.→빠르다)

Redis사용시 주의점

  • 서버장애 발생시 그에 대한 대책이 꼭 필요하다
    • 인메모리 데이터 저장소 특성상 서버장애시 데이터유실이 발생할 수 있다.
  • 메모리 관리가 중요하다.
  • 싱글 쓰레드의 특성상, 한번에 하나의 명령만 처리할 수 있다. 처리시간이 긴 요청, 명령은 피해야 한다.

참고

  • https://velog.io/@joonghyun/SpringBoot-Jwt를-이용한-로그아웃
  • https://wildeveloperetrain.tistory.com/21

'I leaned > Etc' 카테고리의 다른 글

클라우드 네이티브 애플리케이션 개발  (0) 2023.07.05
클라우드 서비스  (0) 2023.07.05
대용량 시스템  (1) 2023.06.01
도커(Docker)  (0) 2023.05.30
텍스트파일과 바이너리파일  (0) 2023.05.11
  1. Redis란?
  2. 왜 필요한가?
  3. Redis의 특징
  4. Redis사용시 주의점
'I leaned/Etc' 카테고리의 다른 글
  • 클라우드 네이티브 애플리케이션 개발
  • 클라우드 서비스
  • 대용량 시스템
  • 도커(Docker)
윤재에요
윤재에요
윤재에요
yunzae.log
윤재에요
전체
오늘
어제
  • 분류 전체보기 (438)
    • Computer Science (115)
      • 데이터베이스 (50)
      • 네트워크 (18)
      • 소프트웨어 공학 (1)
      • 알고리즘 (10)
      • 자료구조 (9)
      • 컴퓨터구조 (0)
      • 운영체제 (0)
      • 데이터 통신 (16)
      • 프로그래밍언어론 (11)
    • Project (20)
      • 후크(Flutter) (1)
      • BDSR로그북(App,BackEnd) (2)
      • 나만의 주점(STM32,Arduino,androi.. (9)
      • 공다(App,BackEnd) (2)
      • 카카오쇼핑 클론코딩 (4)
      • 암호화폐자동매매 (2)
    • Problem Solving (208)
      • 자바 문법 (20)
      • 파이썬 문법,함수 (6)
      • 그리디 (5)
      • 구현 (43)
      • DFS (3)
      • BFS (17)
      • 정렬 (15)
      • 이진 탐색 (16)
      • 다이나믹 프로그래밍 (6)
      • 최단 경로 (5)
      • 그래프 (1)
      • 자료구조 (5)
      • 투포인터 (15)
      • SQL (44)
      • 구간합 (7)
    • I leaned (78)
      • 스프링,스프링부트 (31)
      • Git (6)
      • JAVA (5)
      • Etc (30)
    • 취업 (15)
      • PT면접 (6)
      • 기술면접 (9)
      • 인성면접 (0)
    • log (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 글쓰기

공지사항

인기 글

태그

  • 먀
  • UML
  • 플로이드 워셜
  • E-R Model
  • 다이어그램
  • 효율적인화폐구성
  • weak entity
  • 카카오테크캠퍼스
  • 참조 무결성
  • 다익스트라
  • 부품찾기
  • 계수정렬
  • 이것이 코딩테스트다
  • 이것이 코딩테스트다.
  • Relationship model
  • 최단거리
  • 다이나믹프로그래밍
  • 개미전사
  • DP
  • 교환정렬
  • 최단 거리
  • 다이나믹
  • 그리디
  • 힙큐
  • 파이썬
  • 재시도
  • 제약 사항
  • 데이터베이스
  • 기수정렬
  • 이것이코딩테스트다

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
윤재에요
Redis
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.