개요
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 특징
영속성을 지원하는 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 옵션값을 저장하는 용도로 사용
'개발메모 > 간단정리' 카테고리의 다른 글
[간단정리] JAVA - Checked Exception vs Unchecked Exception (0) | 2022.08.11 |
---|---|
[간단정리] DB 클러스터링, 리플리케이션이란? (0) | 2022.07.19 |
[간단정리] ELK? ELK Stack이란? (0) | 2022.07.05 |
[간단정리] GraphQL이란? (REST api와 차이점) (3) | 2022.07.04 |
[간단정리] HTTP Request/Response 구조 (3) | 2022.06.25 |