[DB] Redis란?

Coodori·2023년 7월 24일
0

Study

목록 보기
4/10
post-custom-banner

작성하게된 계기

나는 이전 프로젝트에서 이메일 인증 시 redis 를 사용하고 최근 우아한 redis 를 보면서 Redis에 관한 공부를 하였다.

그래서 Redis를 이번 토이프로젝트에 적용해보고 싶었는데 하계 인턴을 같이하는 팀원은 Redis를 처음 접해본다고 하여 바로 PPT를 만들었다.

하지만 글로도 남기면 좋을 듯 하여서 적게 되었다.

Redis란

Key,Value 구조의 비정형 데이터 저장관리 오픈소스

  • 비관계형(NoSQL) 데이터 베이스 관리시스템
  • 쿼리 미사용
  • 인메모리로 인한 처리속도 빠름
  • 다양한 Value 지원 : String, Sets, Sorted Sets, List
  • Single Thread로 인한 한번에 하나의 명령 처리
  • get, set 은 초당 10만개 이상 처리 가능

캐시서버란?

  • 데이터 베이스는 물리 디스크에 직접 쓰기에 데이터 손실 방지가 됨
  • 매번 디스크를 접근해야 하기때문에 사용자가 많아질수록 부하가 올라감
  • 한번 읽어온 데이터를 임의의 공간에 저장하여 있으면 반환

캐시의 작동 방식

1. Look aside cache

  1. 클라이언트가 데이터를 요청
  2. 웹 서버는 데이터가 존재하는지 Cache에 먼저 확인
    3-1. 존재할 경우 DB 데이터 조회 X 바로 반환
    3-2. 존재하지 않을 경우 DB 데이터 조회 후 반환

2. Write Back

  1. 웹서버는 모든 데이터를 Cache 서버에 저장
  2. Cache 서버에 특정 시간동안 데이터 저장됨
  3. Cache 서버에 있는 데이터를 DB에 저장

이유: insert 500 <<< insert 1방에 500건
단점: 서버에 장애가 생겨 다운되면 인메모리 특성상 유실 문제

자료형

String : 가장 일반적인 key - value 구조의 형태입니다.

Sets : String의 집합입니다. 여러 개의 값을 하나의 value에 넣을 수 있습니다. 포스트의 태깅 같은 곳에 사용될 수 있습니다.

Sorted Sets : 중복된 데이터를 담지 않는 Set 구조에 정렬 Sort를 적용한 구조로 랭킹 보드 서버 같은 구현에 사용할 수 있습니다.

Lists : Array 형식의 데이터 구조입니다. List를 사용하면 처음과 끝에 데이터를 넣고 빼는 건 빠르지만 중간에 데이터를 삽입하거나 삭제하는 것은 어렵습니다.

사용법

ping 명령어를 통해서 연결된지 확인을 진행해준다.

명령어


Spring boot 와 연결

implementation 'org.springframework.boot:spring-boot-starter-data-redis’
보통 6379 포트 사용( yml 에 작성)

  • 연결

  • 사용 테스트

profile
https://coodori.notion.site/0b6587977c104158be520995523b7640
post-custom-banner

1개의 댓글

comment-user-thumbnail
2023년 7월 24일

좋은 글이네요. 공유해주셔서 감사합니다.

답글 달기