의견.png

"레디스"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
(역사)
(특징)
12번째 줄: 12번째 줄:
  
 
== 특징 ==
 
== 특징 ==
*오픈 소스 소프트웨어고
+
*놀라울 정도로 빠른 성능
*디스크가 아닌 메모리 기반의 데이터 저장소이다. (In-Memory data structure store)
+
데이터를 디스크 또는 SSD에 저장하는 대부분의 데이터베이스 관리 시스템과는 달리 모든 Redis 데이터는 서버의 주 메모리에 상주한다. Redis와 같은 인 메모리 데이터베이스는 디스크에 액세스해야 할 필요를 없앰으로써 검색 시간으로 인한 지연을 방지하고 CPU 명령을 적게 사용하는 좀 더 간단한 알고리즘으로 데이터에 액세스할 수 있다. 일반적으로 작업을 실행하는 데 1밀초 미만이 소요된다.
* [[NoSQL]] & [[Cache]] 솔루션이며 메모리 기반으로 구성된다.
+
*메모리 데이터 구조
* 명시적으로 삭제, expire를 설정하지 않으면 데이터는 삭제되지 않는다(영구적 보존)
+
Redis를 사용하면 사용자가 다양한 데이터 유형에 매핑되는 키를 저장할 수 있다. 기본적인 데이터 유형은 String으로서, 텍스트 또는 이진 데이터가 이에 해당하며 최대 크기는 512MB이다. 또한, Redis는 문자열이 추가된 순서대로 유지되는 Lists of Strings, Sets of unordered Strings, 점수에 따라 정렬되는 Sorted Sets, 필드와 값 목록을 저장하는 Hashes, 데이터 세트에서 고유한 항목을 세는 HyperLogLogs를 지원한다. 거의 모든 유형의 데이터가 Redis를 사용하여 인 메모리에 저장될 수 있다.
* 여러대의 서버 구성 가능하다.
+
*다양성과 사용 편의성
* 데이터베이스로 사용될 있으며, Cache로도 사용될 있는 기술이다. - 캐쉬로 사용할 경우 저장소 기능을 off해야 함.
+
Redis는 개발과 운영을 좀 더 쉽고 좀 더 빠르게 수행할 있는 여러 가지 도구를 제공한다. Pub/Sub는 메시지를 채널에 게시하며, 채널에서 구독자에게 전달된다. 채팅과 메시징 시스템에 매우 적합합니다. TTL 키는 해당 기간 후에는 스스로를 삭제하는 지정된 Time To Live 값을 가질 있다. 데이터베이스를 불필요한 데이터로 채우지 않도록 하는 데 유용하다. 원자성 카운터는 경합 상태가 일관성 없는 결과를 생성하지 않도록 한다. Lua는 강력하지만 간단한 스크립팅 언어이다.
* 성능은 서버에 따라 다르나 초당 2만 ~ 10만회 수행한다.
+
*복제 및 지속성
* String, lists, sets, hashes, sorted sets  과 같은 자료구조를 지원한다.
+
Redis는 마스터-슬레이브 아키텍처를 사용하며 비동기식 복제를 지원하여 데이터가 여러 슬레이브 서버에 복제될 수 있다. 이렇게 하면 주 서버에 장애가 발생하는 경우 요청이 여러 서버로 분산될 수 있으므로 향상된 읽기 성능과 복구 기능을 모두 제공할 수 있다.
* Redis Sentinel을 통해 높은 가용성을 갖을 수 있고, Redis Cluster를 통해 Master-slave의 클러스터링을 수행할 수 있다.
+
*선호하는 개발 언어 지원
* 리스트, 배열 형식의 데이터 처리에 특화됨
+
Redis 개발자는 백 개가 넘는 오픈 소스 클라이언트를 사용할 수 있으며, Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, R, Go를 비롯한 다수의 언어가 지원된다.<ref> 〈[http://blog.naver.com/PostView.nhn?blogId=jvioonpe&logNo=220232089357 장점,특징]〉,《아마존》</ref>
* 여러 프로세스에서 동시에 같은 key에 대한 갱신을 요청할 경우 Atomic처리로 데이터 부정합 방지 Atomic 처리 함수를 제공<ref>괴발개발 개발새발 하는 개발자,〈[https://codingmania.tistory.com/18 APU특징]〉,《네이버 블로그》, 2016-06-10</ref>
 
<ref>swiftymind,〈[https://swiftymind.tistory.com/59?category=701479 APU특징]〉,《티스토리》, 2018-06-29</ref>
 
  
 
== 활용 ==
 
== 활용 ==

2019년 7월 25일 (목) 15:15 판

레디스(Redis)는 Remote Dictionary Server의 약자로서 '키-값'(key-value) 구조의 비관계형 데이터를 저장하고 관리하기 위한 노에스큐엘(NoSQL)의 일종이다. 2009년 살바토르 산필리포(Salvatore Sanfilippo)가 처음 개발했다. 2015년부터 레디스랩스(Redis Labs)가 지원하고 있다. 모든 데이터를 메모리로 불러와서 처리하는 메모리 기반 데이터베이스 관리 시스템(DBMS)이다. BSD 라이선스를 따른다.

개요

Redis는 빠른 오픈 소스 인 메모리 키 값 데이터 구조 스토어이다. Redis는 다양한 인 메모리 데이터 구조 집합을 제공하므로 다양한 사용자 정의 애플리케이션을 손쉽게 생성할 수 있다. 주요 Redis 사용 사례로는 캐싱, 세션 관리, pub/sub 및 순위표를 들 수 있다. Redis는 현재 가장 인기 있는 키 값 스토어로서, BSD 라이선스가 있고, 최적화된 C 코드로 작성되었으며, 다양한 개발 언어를 지원합니다. Redis는 REmote DIctionary Server의 약어이다. Redis는 속도가 빠르고 사용이 간편하여 최고의 성능이 필요한 웹, 모바일, 게임, 광고 기술 및 IoT 애플리케이션에서 널리 사용되고 있다. AWS는 Redis용 Amazon ElastiCache라는 최적화된 완전관리형 데이터베이스 서비스를 통해 Redis를 지원하며, 고객은 원하는 경우 AWS EC2에서 자체 관리형 Redis를 실행할 수도 있다.

역사

Redis 프로젝트는 Redis 의 최초 개발자 인 antirez 라는 별명을 가진 Salvatore Sanfilippo 가 이탈리아 웹 사이트 의 확장 성을 향상시키고 실시간 웹 로그 분석기를 개발하려고 할 때 시작되었다 . 기존 데이터베이스 시스템을 사용하여 일부 유형의 작업 부하를 조정하는 데 심각한 문제가 발생한 후 Sanfilippo는 Tcl 에서 Redis의 개념 증명 버전을 프로토 타입 화하기 시작했다.나중에 Sanfilippo는 프로토 타입을 C 언어로 번역하고 첫 번째 데이터 유형 인 목록을 구현했다. 내부적으로 성공을 거둔 프로젝트를 몇 주 동안 사용한 후 Sanfilippo는 소스를 공개하고 Hacker News 에서 프로젝트를 발표하기로 결정했다. 프로젝트는 GitHub 과 Instagram을 채택한 최초의 회사 중 하나 인 Ruby 커뮤니티에서 더욱 주목 받기 시작 했다. Sanfilippo는 2010 년 3 월 VMware 에 고용되었다 . 2013 년 5 월 Redis는 Pivotal Software (VMware 분사)의 후원을 받았다 . 2015 년 6 월에 Redis Las 가 후원했다 . 2018 년 10 월에 Redis 5.0이 출시되었다. Redis Stream은 단일 키에서 자동 시간 기준 시퀀스를 사용하여 여러 필드와 문자열 값을 저장할 수있는 새로운 데이터 구조이다.

특징

  • 놀라울 정도로 빠른 성능

데이터를 디스크 또는 SSD에 저장하는 대부분의 데이터베이스 관리 시스템과는 달리 모든 Redis 데이터는 서버의 주 메모리에 상주한다. Redis와 같은 인 메모리 데이터베이스는 디스크에 액세스해야 할 필요를 없앰으로써 검색 시간으로 인한 지연을 방지하고 CPU 명령을 적게 사용하는 좀 더 간단한 알고리즘으로 데이터에 액세스할 수 있다. 일반적으로 작업을 실행하는 데 1밀초 미만이 소요된다.

  • 인 메모리 데이터 구조

Redis를 사용하면 사용자가 다양한 데이터 유형에 매핑되는 키를 저장할 수 있다. 기본적인 데이터 유형은 String으로서, 텍스트 또는 이진 데이터가 이에 해당하며 최대 크기는 512MB이다. 또한, Redis는 문자열이 추가된 순서대로 유지되는 Lists of Strings, Sets of unordered Strings, 점수에 따라 정렬되는 Sorted Sets, 필드와 값 목록을 저장하는 Hashes, 데이터 세트에서 고유한 항목을 세는 HyperLogLogs를 지원한다. 거의 모든 유형의 데이터가 Redis를 사용하여 인 메모리에 저장될 수 있다.

  • 다양성과 사용 편의성

Redis는 개발과 운영을 좀 더 쉽고 좀 더 빠르게 수행할 수 있는 여러 가지 도구를 제공한다. Pub/Sub는 메시지를 채널에 게시하며, 채널에서 구독자에게 전달된다. 채팅과 메시징 시스템에 매우 적합합니다. TTL 키는 해당 기간 후에는 스스로를 삭제하는 지정된 Time To Live 값을 가질 수 있다. 데이터베이스를 불필요한 데이터로 채우지 않도록 하는 데 유용하다. 원자성 카운터는 경합 상태가 일관성 없는 결과를 생성하지 않도록 한다. Lua는 강력하지만 간단한 스크립팅 언어이다.

  • 복제 및 지속성

Redis는 마스터-슬레이브 아키텍처를 사용하며 비동기식 복제를 지원하여 데이터가 여러 슬레이브 서버에 복제될 수 있다. 이렇게 하면 주 서버에 장애가 발생하는 경우 요청이 여러 서버로 분산될 수 있으므로 향상된 읽기 성능과 복구 기능을 모두 제공할 수 있다.

  • 선호하는 개발 언어 지원

Redis 개발자는 백 개가 넘는 오픈 소스 클라이언트를 사용할 수 있으며, Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, R, Go를 비롯한 다수의 언어가 지원된다.[1]

활용

Redis는 페이스북, 인스타그램, 네이버 LINE 서비스, StackOverflow, 블리자드, 트위터, GitHub,웨이보, Pinterest, 스냅챗, 크랭크리스트, Digg, StackOverflow, 플리커등 대형 서비스 없체들이 사용자들의 대규모 메세지를 실시간으로 처리하기 위하여 사용하고 있다.[2]

평가 및 전망

각주

  1. 장점,특징〉,《아마존》
  2. redis, 〈지원〉,《레디스 공식 사이트》

참고자료

  • redis, 〈지원〉,《레디스 공식 사이트》

같이 보기


  의견.png 이 레디스 문서는 데이터에 관한 토막글입니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 이 문서의 내용을 채워주세요.