반응형
여승철
INTP 개발자
여승철
  • 분류 전체보기 (376)
    • CS (16)
      • 면접 준비 (7)
      • 운영체제 (0)
      • 네트워크 (2)
      • HTTP (6)
      • 스프링(Spring) IoC 컨테이너 (0)
      • 알고리즘 (1)
    • Web (13)
    • AWS (6)
    • Java (43)
    • JSP & Servlet (65)
      • 개념 (42)
      • 실습 (23)
    • Spring Framework (33)
    • Spring Boot (10)
    • Spring Data (22)
      • JPA (14)
      • Query DSL (7)
      • Redis (1)
    • Spring Security (9)
    • Spring Batch (4)
    • MyBatis (10)
    • Front-End (51)
      • JS (27)
      • Vue.js (17)
      • React (5)
      • JQuery (0)
      • d3.js (2)
    • DBMS (24)
      • SQL, RDBMS (16)
      • MongoDB (5)
      • Redis (3)
    • Kafka (3)
    • 리눅스 (Linux) (4)
    • 디자인 패턴 (3)
    • VCS (8)
    • API (0)
    • TOOL (3)
    • Reading Book (28)
      • 이펙티브 자바 (11)
      • Clean Code (10)
      • 1분 설명력 (4)
      • HOW TO 맥킨지 문제해결의 기술 (3)
    • C# (4)
    • NSIS (6)
    • ETC (11)

블로그 메뉴

  • 홈
  • 태그

인기 글

태그

  • 회원 관리
  • 로그인
  • jsp
  • controller
  • 게시판
  • querydsl
  • 환경 세팅
  • 맥킨지
  • 스트림
  • ubuntu
  • JSTL
  • Spring Batch
  • 이펙티브 자바
  • Dao
  • 디자인 패턴
  • HTTP
  • JDBC
  • EC2
  • mybatis
  • servlet

최근 댓글

최근 글

hELLO· Designed By 정상우.
여승철

INTP 개발자

Redis 간단하고 빠른 In-Memory 데이터 저장, docker에 Redis 설치, Redis 명령어
DBMS/Redis

Redis 간단하고 빠른 In-Memory 데이터 저장, docker에 Redis 설치, Redis 명령어

2024. 1. 31. 14:52
반응형

Redis: Remote Dictionary Server

Redis는 메모리 내(In-Memory)에서 데이터를 저장하고 관리하는 오픈 소스 데이터 구조 서버입니다.

 

Redis 특징

1. In-Memory Store

Redis는 메모리 내에 데이터를 저장할 수 있는 In-Memory DB 입니다. 디스크보다 메모리에서 데이터를 읽고 쓰는 것이 빠르기 때문에 데이터에 빠르게 액세스 할 수 있습니다. 이러한 특징으로 Redis는 캐시 역할도 하여 다른 DB의 부하를 줄이고 응용 프로그램의 성능을 향상시킬 수 있습니다.

Redis는 In-Memory 즉, 휘발성인 RAM에 저장하기 때문에 데이터가 영속성을 갖지 않는 문제가 있습니다.

 

2. 휘발성

Redis는 메모리 내에 데이터를 저장하기 때문에 시스템을 다시 시작할 때 데이터를 잃어버릴 수 있습니다. 즉 영속성을 갖고있지 않습니다. 하지만 Redis 데이터 액세스 속도가 매우 빠르기 때문에 속도와 휘발성을 절충하는 방법들을 생각하였습니다.

  1. Redis를 휘발성 용도에 맞춰 사용하기
    Redis에 담긴 데이터는 영속성을 갖지 않기 때문에 세션 데이터 같은 단기적인 데이터를 저장하는 방법입니다.
    (세션 데이터는 휘발돼도 치명적인 문제가 생기지 않은 데이터가 담깁니다.)
  2. Cache로 사용하기
    첫 번째 절충안과 결이 같은 방법입니다. 디스크의 접근을 줄이기 위해 DB 접근 전에 캐시(Redis)에 먼저 접근하게 하는 방법입니다.
  3. Redis 데이터 백업하기
    Redis에 있는 데이터를 디스크에 백업하여 어느정도의 영속성을 확보하는 방법입니다.

3. Key-Value Store

Redis는 단순한 Key-Value 형태의 데이터 구조를 갖고 있습니다. Key 값을 통해  Value 값을 찾아내는데, 이때 Key 값을 Hash을 이용해 값을 읽기 때문에 속도가 빠르다는 장점이 있습니다. 반대로 Key-Value이기 떄문에 범위 검색 같은 질의가 불가능합니다.

각 Key는 고유하고, 해당 키에는 문자열, 해시, 리스트, 집합, 정렬 집합 등 다양한 데이터 유형의 값이 저장됩니다.

 

 

Redis 설치

가상 환경인 컨테이너 Docker에 Redis를 설치하겠습니다. 

 

1. docker 설치

  • Windows: Home 버전인 경우 WSL (Windows Subsystem for Linux) 를 이용해주어야 했지만, 이제는 그냥 WSL2를 활용해 작동하는 것이 권장되기 때문에 WSL2를 설치하고 Docker를 설치해줍니다.
  • Mac: brew 패키지 관리자를 사용하여 설치해줍니다.
  • Linux: apt-get, yum 패키지 관리자를 사용하여 설치해줍니다.

저의 경우 Docker를 UI를 이용해 쉽게 사용할 수 있게 해주는 Docker Desktop을 설치하여 사용하도록 하겠습니다. Docker Desktop도 마찬가지로 WIndows 환경일 때 WSL2를 설치하여야 작동함을 주의해야합니다.

https://www.docker.com/products/docker-desktop/

 

Docker Desktop: The #1 Containerization Tool for Developers | Docker

Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux.

www.docker.com

 

2. redis 설치

docker-desktop을 설치하여 위 검색창에 redis를 검색하여 다운 받을 수 있습니다. 하지만 그냥 docker만 설치한 사람도 있을 수 있기 때문에 커맨드 라인 방식으로 설명하도록 하겠습니다. (docker desktop)을 설치하여도 커맨드 라인 사용할 수 있습니다.

:: Docker Registry에서 redis 이미지 불러오기
:: 버전을 명시하지 않은 경우 최신 버전의 이미지 불러옴
> docker pull redis

 

3. redis 실행 및 중단

docker-desktop의 경우 UI를 통해 Redis를 실행하고 삭제하는 것 까지 전부 제어할 수 있습니다.

 

docker만 설치하였을 경우 아래와 같이 제어가능합니다. docker-desktop 역시 가능합니다.

:: Redis 실행 (최초, 컨테이너 생성)
> docker run --name myredis -d -p 6379:6379 redis

:: docker에서 실행중인 프로세스 확인
> docker ps

:: Redis 중단
> docker stop myredis

:: Redis 재시작
> docker start myredis

:: Redis 컨테이너 삭제
> docker rm myredis

 

4. redis 명령어 사용

docker-desktop의 경우 [Open in terminal]을 통해 Redis 명령어를 입력할 수 있습니다.

 

docker 만 설치하였을 경우 아래와 같이 redis 명령어를 실행할 수 있습니다. docker-desktop 역시 가능합니다.

:: Docker Container 안에서 shell 실행
> docker exec -it myredis /bin/sh

:: shell에서 Redis-cli 실행
:: redis-cli: redis 서버 커맨드를 실행할 수 있는 인터페이스입니다.
:: redis 서버가 컨테이너 내에 있기 때문에 redis-cli도 컨테이너 내부에서 실행해야 합니다.
:: 호스트와 포트를 지정하지 않으면 127.0.0.1:6379가 사용됩니다.
# redis-cli

:: 명령어 실행
127.0.0.1:6379> [redis 명령어]

 

반응형

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

Redis redis를 이용하여 랭킹 리더보드 구현하기  (0) 2024.02.06
Redis redis-cli 명령어 정리  (2) 2024.02.05
    여승철
    여승철

    티스토리툴바