개발메모/간단정리

[간단정리] Redis(레디스)란?

99C0RN 2022. 7. 7. 19:41

개요

Redis(레디스) 간단하게 알아보기


Redis

Redis(레디스)는 REmote DIctionary Server의 약자로 오픈소스(BSD licensed) DBMS입니다.
In-memory(인메모리) 데이터 저장소이며, Key-Value기반의 NoSQL DBMS입니다.
보통 DB, Cache(캐시), 메시지 브로커 등의 용도로 사용합니다.

 

For instance, using pipelining Redis running on an average Linux system can deliver even 1 million requests per second.

 

초당 10만 ~ 15만건의 명령을 수행할 수 있으며, 위 공식문서의 내용처럼 파이프링을 통해
리눅스시스템에서 초당 100만건의 요청도 수행이 가능하다고 합니다.


Redis 사용 목적

Redis 사용 목적 관련하여, 좋은 포스팅이 있어 아래 링크로 설명 대체합니다.

https://brunch.co.kr/@jehovah/20

 

Redis 기본 정리

캐시를 알아야 하는 순간! | 캐시를 접하게 되는 순간 서비스를 처음 운영할 때는 WEB-WAS-DB의 전형적인 3티어 구조를 취하는 편이 보통입니다. 사용자가 몇 명 되지 않는 서비스의 경우에는 3티어

brunch.co.kr


Redis 특징

영속성을 지원하는 In-memory(인메모리) 데이터 저장소

* 영속성(persistence): 데이터를 생성한 프로그램의 실행이 종료되더라도 사라지지 않는 데이터의 특성을 의미


읽기 성능 증대를 위한 서버 측 복제를 지원한다.
(Redis가 실행중인 서버가 충돌하는 경우 장애 조치 처리와 함께 더 높은 읽기 성능을 지원하기 위해 슬레이브가 마스터에 연결하고 전체 데이터베이스의 초기 복사본을 받는 마스터 / 슬레이브 복제를 지원한다. 마스터에서 쓰기가 수행되면 슬레이브 데이터 세트를 실시간으로 업데이트하기 위해 연결된 모든 슬레이브로 전송된다.)


쓰기 성능 증대를 위한 클라이언트 측 샤딩(Sharding)을 지원한다.

* 샤딩(Sharding): 파티셔닝(Partitionong)과 동일하다. 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법을 의미한다.


Redis 장점

리스트, 배열과 같은 데이터를 처리하는데 유용하다.
value 값으로 String, 리스트, Set, Sorted set, Hash 등 여러 데이터 형식을 지원하기에, 다양한 방식으로 데이터를 활용할 수 있다.

리스트형 데이터 입력과 삭제가 MySQL에 비해서 10배정도 빠르다고 한다.
여러 프로세스에서 동시에 같은 key에 대한 갱신을 요청할 경우, Atomic 처리로 데이터 부정합 방지 Atomic처리 함수를 제공한다.(원자성을 잘 지킨다)

메모리를 활용하면서 영속적인 데이터 보존
명령어로 명시적으로 삭제, expires를 설정하지 않으면 데이터가 삭제되지 않는다.
스냅샷(기억장치) 기능을 제공하여 메모리의 내용을 *.rdb 파일로 저장하여 해당 시점으로 복구할 수 있다.

Redis Server는 1개의 싱글 쓰레드로 수행된다.
따라서 서버 하나에 여러개의 서버를 띄우는 것이 가능하다.
Master — Slave 형식으로 구성이 가능함, 데이터 분실 위험을 없애주는 것이 바로 Master — Slave 방식이다.


Redis 자료형

문자열, 리스트, 해시, 셋, 정렬된 셋과 같은 다양한 데이터형을 지원한다.
저장소 : in memory storage
저장방식 : key-value
데이터 타입 : String, Set, Sorted Set, Hash, List
데이터 저장 : Memory, Disk
메모리 재사용 : 메모리 재사용 하지 않음
스레드 : 싱글 스레드
캐싱 용량 : key&value 모두 512MB

  • String
    value에 문자,숫자 등을 저장한다
    저장시 별도로 형이 없다.
    숫자도 저장 가능하다. 그리고 숫자에 incr, incrby, decr, decrby 같은 atomic counter연산이 가능하다.
  • List
    value에 list를 저장한다.
    lrange: 값을 조회 이때 -1은 모두 가져오라는 뜻
    ex) lrange test_lists 0 -1
  • Sets
    value를 set형태로 가지고 있음
    list는 중복이 되나 set은 중복이 안된다.
  • Hashes
    Hashs key/value 목록을 값으로 가진다.
  • Sorted sets
    value를 set 형태로 가지고 있으며, set처럼 중복은 안된다.
    score와 함께 저장되며 score를 기준으로 정렬된다.
    정렬이 가능하다는 장점이 있따.
  • Bitmaps
    bit값을 저장하며, boolean 옵션값을 저장하는 용도로 사용