이 영역을 누르면 첫 페이지로 이동
시간의화살 블로그의 첫 페이지로 이동

시간의화살

페이지 맨 위로 올라가기

시간의화살

행복하세요

[Redis] 캐시 서버와 명령어

  • 2024.04.27 00:10
  • Database/Redis

 

 

 

Redis는 다른 데이터베이스들과 마찬가지로 데이터를 저장하고 쿼리를 통해 데이터를 가져올 수 있는 데이터베이스지만, Redis의 몇 가지 특징 덕분에 다른 데이터베이스들보다 속도가 빠르다. 

 

 

 

 

 

기본적으로 많은 DBMS는 데이터를 HDD나 SSD에 저장해 데이터의 영속성을 보장한다.

반면 Redis는 데이터를 RAM에 저장해 HDD나 SSD에 데이터를 저장할 때 보다 읽기 및 쓰기 작업을 훨씬 빠르게 수행할 수 있다. 

 

이 외에도 다른 DBMS와는 다르게 Redis는 스키마 대신 key-value 쌍으로 데이터를 저장하고 각 key에 대해 여러 자료구조를 선택해서 사용할 수 있는 등 여러 차별화된 특징을 가지고, 이 특징 덕분에 높은 성능을 보장한다. 

 

 

 

 


 

 

 

 

 

 

 

 

Redis에서는 문자열인 키를 사용해서 값을 참조하고, 참조되는 값은 다양한 데이터 구조로 저장될 수 있다. 

모든 데이터 접근은 키를 통해 이루어지고 값의 데이터 구조마다 다른 명령어를 사용한다.

 

https://redis.io/docs/latest/commands/

공식문서에서 다양한 명령어를 확인할 수 있으니.. 자세한 사용법은 공식문서를 참고하자.

 

 

 

 

 

 

지금은 Redis를 캐싱 서버, 세션 저장, 메세지 브로커 등 여러 방식으로 사용하지만, 원래는 캐싱 서버로 사용될 목적으로 개발됐다.

 

데이터를 저장할 때 사용하는 SET 명령어에서도 아무 옵션도 설정하지 않으면 애플리케이션이 꺼질 때 까지 데이터를 메모리에 저장하지만, EX 옵션을 추가하면 데이터가 만료될 시간을 지정할 수 있다. 

 

이 외에도 SETEX, SETNX, MSET 등 여러 축약형 명령어와 SETARRANGE GETARRANGE 같이 특정 문자열의 인덱스를 지정해서 조작할 수 있는 명령어를 제공한다.

 

 

 

 

 

 

 

 

이런식으로 자주 사용되는 데이터들을 인코딩해서 사용하는 경우 레디스의 메모리를 좀 더 효율적으로 사용할 수 있다. 

이 경우 SETRANGE / GETRANGE 명령어를 사용하자.

 

숫자를 다룰 때는 내부적으로 최적화를 진행해 메모리에 int 타입으로 저장하고, int 타입으로 커버할 수 없는 숫자는 문자열 형태로 저장한다.

INCR DESC INCRBY 등 숫자를 다루는 명령어들은 내부에서 원자적으로 처리돼 여러 클라이언트의 동시 요청에도 순차적 처리를 보장하니 참고하자. 

 

 

 

 

SSR을 지원하는 프레임워크에서도 Redis를 도입해 성능을 향상시킬 수 있다.

 

사용자에게 제공하는 화면 중 모든 사용자가 같은 화면을 보게 되는 정적 페이지의 경우 사용자별로 캐싱하지 않아도 돼 저장하는 용량도 줄일 수 있어 캐시로 저장하기에 적합하고, 커스텀 페이지  header / footer 등 공통 컴포넌트만 캐싱하는 것 처럼 캐싱 전략을 세밀하게 조정해서 사용한다.

 

Redis의 이점 중 가장 중요한 요소는 캐시를 통한 서버 IO 줄이기이니.. 이 부분에 집중하자. 

반응형
저작자표시 (새창열림)

'Database > Redis' 카테고리의 다른 글

[Redis] Stream  (1) 2024.10.10
[Redis] Module - RediSearch  (0) 2024.10.06
[Redis] 동시성 제어  (4) 2024.05.25
[Redis] 파이프라인과 자료구조  (0) 2024.05.15

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [Redis] Stream

    [Redis] Stream

    2024.10.10
  • [Redis] Module - RediSearch

    [Redis] Module - RediSearch

    2024.10.06
  • [Redis] 동시성 제어

    [Redis] 동시성 제어

    2024.05.25
  • [Redis] 파이프라인과 자료구조

    [Redis] 파이프라인과 자료구조

    2024.05.15
다른 글 더 둘러보기

정보

시간의화살 블로그의 첫 페이지로 이동

시간의화살

  • 시간의화살의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (605)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • Java (19)
      • JavaScript (15)
      • C (25)
      • C++ (12)
      • Python (1)
      • PHP (2)
    • Computer Science (68)
      • Operating System (18)
      • Computer Network (16)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Github Actions (0)
      • Amazon Web Service (8)
    • Machine Learning (28)
      • AI Introduction (28)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • Solutions (13)
    • Life Logs (0)
    • 낙서장 (25)

최근 글

나의 외부 링크

메뉴

  • 홈

정보

13months의 시간의화살

시간의화살

13months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © 13months.

티스토리툴바