Redis

송민지·2022년 7월 22일
0

실전프로젝트

목록 보기
13/20

Redis

Remote Dictionary Server의 약자로 "키-값"구조의 비정형 데이터를 저장하고 관리하기 위한 오픈소스 기반으니 비관계성 데이터베이스 관리 시스템(DBMS).

속도가 빠르고 사용이 간편하여 최고의 성능이 필요한 웹, 모바일, 게임, 광고기술 및 IoT 애플리케이션에서 널리 사용되고 있다.

Redis의 성능

1. 빠른 성능

다른 데이터베이스 시스템과 달리 Redis 데이터는 서버의 주 메모리에 위치한다.
(운영체제의 캐시메모리와 같은 기능)
덕분에 직접 데이터에 접속하여 검색시간으로 인한 지연을 방지하고 cpu 명령을 적게 사용하는 조금 더 간단한 알고리즘으로 데이터에 접근할 수 있다.
데이터의 안전한 보관과 백업을 위해 다른 서버의 메모리에 실시간으로 복사본을 남길 수 있고, 디스크에 저장하는 방법을 제공해준다.

2. 인 메모리 데이터 구조[1]

사용자가 다양한 데이터 유형에 매핑된는 키를 저장할 수 있다.

거의 모든 유형의 데이터를 redis를 사용하여 인 메모리에 저장 할 수 있다.
이렇게 다양한 자료구조를 지원하게 되면 개발의 편의성이 좋아지고 난이도가 낮아진다는 장점이 있다.

다양성과 사용 편의성

개발과 운영을 좀 더 쉽고 빠르게 수행할 수 있는 여러가지 도구를 제공한다.
Pub/Sub는 메시지를 채널에 게시 및 구독자에게 메시지를 전달하기 때문에 채팅과 메시징 시스템에 적합하다.
TTL키는 해당 시간 후에 스스로 삭제되는 Time To Live 값을 가져 데이터베이스를 불필요한 데이터로 채우지 않도록 해준다.
원자성 카운터는 경합 상태가 일관성 없는 결과를 생성하지 않도록 해준다. (해시값 증가, 요소에 푸시, 집합 계산 및 정렬된 세트에서 가장 높은 순위를 가진 값을 뽑을수도 있다.)
Lua는 강력하지만 간단한 스크립팅 언어다.

복제 및 지속성

Redis는 빠른 논블로킹 동기화 및 네트워크 분할, 부분 재동기화를 통한 자동 재접속을 통해 비동기 복제를 지원한다. 이렇게 하면 주 서버에 장애가 발생해도 요청이 여러 서버로 분산되어 향상된 읽기 성능과 복구 기능을 제공할 수 있다.

Redis는 안정성을 제공하기 위해 특정 시점 스냅샷(Redis 데이터 세트를 디스크로 복사)과 데이터가 변경될 때마다 이를 디스크에 저장하는 Append Only File(AOF) 생성을 모두 지원한다. 두 방법 모두 모두 장애 발생 시 Redis 데이터를 신속하게 복원할 수 있다.

개발언어 지원

Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, R, Go를 비롯한 다수의 언어가 지원된다.

[1]: 디스크가 아닌 주 메모리에 모든 데이터를 보유하고 있는 데이터 베이스. 데이터 양의 빠른 증가로 데이터베이스 응답 속도가 떨어질 때 문제를 해결 할 수 있는 데안을 가진 데이터베이스다. 단점은 메모리가 휘발성이라 전원이 꺼지면 바로 삭제된다. 보통 로그인 세션같은 날아가도 상관 없는 임시 데이터에 주로 쓰인다.


https://aws.amazon.com/ko/elasticache/what-is-redis/
https://redis.io/docs/about/
https://devlog-wjdrbs96.tistory.com/374
https://namu.wiki/w/%EC%9D%B8%20%EB%A9%94%EB%AA%A8%EB%A6%AC%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4#rfn-1
http://redisgate.kr/redis/introduction/redis_intro.php

profile
기록하는 일상

0개의 댓글