레디스

Redis
레디스
원저자살바토레 산필리포[1][2]
개발자레디스[1][2]
초도출시2009년 2월 26일, 15년 전(2009-02-26)[3]
안정적 방출
7.2.4[4] / 2024년 1월 9일, 2개월(2024년 1월 9일)
저장소
로 적음C
운영체제유닉스 계열의[5]
사용 가능한 위치영어
유형데이터 구조 저장소, 키-밸류 데이터베이스
면허증.Redis 소스 사용 가능 라이센스 또는 SSPL
웹사이트redis.io Edit this on Wikidata

Redis(/ˈr ɛd ɪs/; Remote Dictionary Server)는 메모리 에서 사용할 수 있는 소스로, 메모리키-값 데이터베이스, 캐시 및 메시지 브로커사용되며, 내구성은 옵션입니다. Redis는 메모리에 모든 데이터를 저장하고 설계 때문에 읽기 및 쓰기 지연 시간이 짧기 때문에 캐시가 필요한 사용 사례에 특히 적합합니다. Redis는 가장 인기 있는 NoSQL 데이터베이스이며 [10][11][12]전체적으로 가장 인기 있는 데이터베이스 중 하나입니다.[13] Redis는 Twitter,[14][15] Airbnb,[16] Tinder,[17] Yahoo,[18] Adobe,[19] Hulu,[20] Amazon[21]Open과 같은 회사에서 사용됩니다.AI.[22]

Redis는 문자열, 목록, , 집합, 정렬된 집합, HyperLogLogs, 비트맵, 스트림공간 인덱스와 같은 다양한 종류의 추상 데이터 구조를 지원합니다.

이 프로젝트는 2009년부터 Salvatore Sanfilippo에 의해 개발 및 유지 관리되었습니다.[23] 2015년부터 2020년까지 Redis Labs의 후원을 받는 프로젝트 코어 팀을 이끌었습니다.[24] 살바토레 산필리포(Salvatore Sanfilippo)는 2020년 레디스(Redis)를 유지로 떠났습니다.[25] 2021년에 Redis Labs는 Labs를 이름에서 삭제했으며 현재는 단순히 "Redis"로 알려져 있습니다.[26]

2018년에 Redis의 일부 모듈은 SSPL을 채택하여 독점 소프트웨어가 되었습니다.[27] 2024년, 주요 Redis 코드는 Redis Source Available License v2와 Server Side Public License v1에 따라 이중 라이선스로 전환되었습니다.[6]

역사

Redis의 원조 개발자인 Salvatore Sanfilippo (2015년 사진)

Redis라는 이름은 원격 사전 서버를 의미합니다.[7] 레디스 프로젝트는 레디스의 원조 개발자인 안티레즈라는 별명을 가진 살바토레 산필리포(Salvatore Sanfilippo)가 실시간 웹 로그 분석기를 개발하면서 이탈리아 스타트업의 확장성을 개선하려고 노력하던 중 시작되었습니다. 기존 데이터베이스 시스템을 사용하여 일부 유형의 워크로드를 확장하는 데 상당한 문제가 발생한 후, Sanfilippo는 2009년에 Tcl에서 Redis의 첫 번째 개념 증명 버전을 프로토타입으로 제작하기 시작했습니다.[28] 나중에 산필리포는 그 프로토타입을 C 언어로 번역하고 첫 번째 데이터 유형인 목록을 구현했습니다. 몇 주 동안 내부적으로 프로젝트를 성공적으로 사용한 후, 산필리포는 프로젝트를 해커 뉴스에 발표하면서 오픈 소스로 결정했습니다. 이 프로젝트는 특히 루비 커뮤니티에서 주목을 받기 시작했으며 깃허브인스타그램이 이를 채택한 첫 번째 회사 중 하나입니다.[29][30]

Sanfilippo는 2010년 3월 VMware에 고용되었습니다.[31][32][33]

2013년 5월, Redis는 Pivotal Software(VMware 분사)의 후원을 받았습니다.[34]

2015년 6월, 개발은 Redis Labs의 후원을 받게 되었습니다.[35]

2018년 8월, Redis Labs는 독점 소프트웨어 라이센스인 Server Side Public License로의 전환을 발표했습니다. 처음에는 Redis Labs에서 주로 개발한 일부 옵션 모듈에만 영향을 미친다고 합니다.[36]

2018년 10월에 Redis 5.0이 출시되었으며, Redis Stream은 단일 키에서 시간 기반 시퀀스를 자동으로 사용하여 여러 필드와 문자열 값을 저장할 수 있는 새로운 데이터 구조입니다.[37]

2020년 6월, 살바토레 산필리포는 레디스의 유일한 유지인 자리에서 물러났습니다. 산필리포는 요시 고틀립과 오란 아그라가 그 뒤를 이었습니다.[38][39]

2024년 Redis는 핵심 저장소에 대한 Redis Source Available License v2 및 Server Side Public License v1로 스타일이 변경된 다른 독점 소프트웨어 라이센스로 전환되었습니다.[6]

다른 데이터베이스 시스템과의 차이점

Red는 상점과 캐시를 동시에 고려할 수 있는 시스템 아이디어를 대중화했습니다. 주 컴퓨터 메모리에서 항상 데이터를 수정하여 읽되 랜덤 데이터 접근에 적합하지 않은 형식으로 디스크에 저장할 수 있도록 설계되었습니다. 포맷된 데이터는 시스템이 재시작된 후에만 메모리로 재구성됩니다.

Redis는 또한 관계형 데이터베이스 관리 시스템(RDBMS)에 비해 매우 특이한 데이터 모델을 제공합니다. 사용자 명령은 데이터베이스 엔진에서 실행할 쿼리를 설명하는 것이 아니라 특정 추상 데이터 유형에 대해 수행되는 특정 작업을 설명합니다. 따라서 데이터는 나중에 빠른 검색에 적합한 방식으로 저장해야 합니다. 검색은 전통적인 RDBMS의 2차 인덱스, 집계 또는 기타 일반적인 기능의 형태로 데이터베이스 시스템의 도움 없이 수행됩니다. Redis 구현은 데이터를 유지하는 프로세스를 복제하기 위해 포크 시스템 호출을 많이 사용합니다. 따라서 하위 프로세스가 디스크에 인메모리 데이터를 쓰는 동안 상위 프로세스가 클라이언트에 계속 서비스를 제공합니다.

인기

월별 DB-Engine 순위에 따르면 Redis는 종종 가장 인기 있는 키-밸류 데이터베이스입니다.[10] Redis는 또한 사용자 리뷰를 기반으로 사용자 만족도 및 시장 존재감에서 NoSQL 데이터베이스 4위, 컨테이너에서 가장 인기 있는 NoSQL 데이터베이스, 웹사이트 stackshare.io 에서 선정한 2019년 데이터 스토어 4위에 올랐습니다. 2017년, 2018년, 2019년, 2020년 및 2021년 스택 오버플로 개발자 설문조사에서 가장 사랑받은 데이터베이스로 선정되었습니다.[43]

지원되는 언어

버전 2.6 이후, Redis는 Lua 언어로 서버 스크립트를 제공합니다.[44]

많은 프로그래밍 언어들은 클라이언트 측에 레디 언어 바인딩을 가지고 있습니다.[45] ActionScript, C, C++, C#, Chicken, Clojure, Common Lisp, Crystal, D, Dart, Delphi,[46] Elixir, Erlang, Go, Haskell, Haxe, Io, Java, Nim, JavaScript (Node.js), Julia, Lua, Objective-C, OCaml, Perl, PHP, Pure Data, Python, R,[47] Racket, Ruby, Rust, Scala, Smalltalk, Swift, and Tcl. 여러 클라이언트 소프트웨어 프로그램이 이러한 언어로 존재합니다.[45]

데이터 유형

Redis는 키를 값 유형에 매핑합니다. Redis와 다른 구조화된 스토리지 시스템의 중요한 차이점은 Redis가 문자열뿐만 아니라 추상적인 데이터 유형도 지원한다는 것입니다.

  • 목록
  • 문자열 집합(반복되지 않은 소트되지 않은 요소의 집합)
  • 정렬된 문자열 집합(스코어라고 하는 부동 소수점 번호로 정렬된 비반복 요소 집합)
  • 키와 값이 문자열인 해시 테이블
  • 대략적인 집합 카디널리티 크기 추정에 사용되는 HyperLogLogs는 2014년 4월 Redis 2.8.9 이후 사용 가능합니다.[37]
  • 소비자 그룹이 포함된 항목의 스트림을 통해 여러 필드와 문자열 값을 단일 키에서 시간 기반 자동 시퀀스로 저장할 수 있습니다. Redis는 2018년[37] 10월 5.0부터 사용할 수 있습니다.
  • 지리해시 기법의 구현을 통한 지리공간 데이터, Red는 3.2부터 제공됩니다.[48]

값의 유형은 값에 사용할 수 있는 작업(명령어라고 함)을 결정합니다. Redis는 교차, 결합 및 집합 간의 차이 및 목록, 집합 및 정렬된 집합의 정렬과 같은 상위 수준, 원자, 서버 측 작업을 지원합니다.

Redis Modules API를 기반으로 더 많은 데이터 유형을 지원합니다. 이들 중 일부는 BSD 3 조항에 따라 이중 라이센스가 부여되지 않습니다.[49]

  • JSON – RedisJSON은[50] ECMA-404(JavaScript Object Notification Data Interchange Standard)를 기본 데이터 유형으로 구현합니다.[51]
  • 검색 - Redis용 쿼리 엔진으로, 보조 인덱싱, 전체 텍스트 검색, 벡터 유사성 검색 및 집계를 제공합니다.[52]
  • 시계열 – RedisTimeSeries는[53] 시계열 데이터 구조를 구현합니다.
  • Bloom filter, Cuckoo filter, Count-min sketch, Top-K – RedisBloom은[54] Redis를 위한 확률적 데이터 구조를 구현합니다.
  • 기타

이전 구현은 다음과 같습니다.

  • 그래프 – RedisGraph는[56] 쿼리 가능한 속성 그래프를 구현합니다.

고집

Redis는 일반적으로 전체 데이터 세트를 메모리에 저장합니다. 데이터 세트의 일부가 디스크에 저장되는 가상 메모리를[59] 사용하도록 2.4까지의 버전을 구성할 수 있지만 이 기능은 권장되지 않습니다. Redis의 지속성은 두 가지 다른 방법을 통해 달성할 수 있습니다. 먼저 데이터 세트가 이진 덤프로 일정한 간격으로 메모리에서 디스크로 비동기식으로 전송되는 스냅샷을 통해 Redis RDB Dump File Format을 사용합니다. 또는 백그라운드 프로세스에서 데이터 세트를 수정하는 각 작업의 레코드가 추가 전용 파일(AOF)에 추가되는 저널링을 통해. Redis는 저널의 무한 확장을 방지하기 위해 추가 전용 파일을 백그라운드에서 다시 작성할 수 있습니다. 저널링은 버전 1.1에서 도입되었으며 일반적으로 더 안전한 접근 방식으로 간주됩니다.

기본적으로 Redis는 최소 2초마다 파일 시스템에 데이터를 기록하며, 필요한 경우 다소 강력한 옵션을 사용할 수 있습니다. 기본 설정에서 시스템 장애가 완전히 발생할 경우 몇 초의 데이터만 손실됩니다.

복제

Redis는 마스터-복제 복제를 지원합니다. Redis 서버의 데이터는 복제본 수에 상관없이 복제할 수 있습니다. 복제본은 다른 복제본의 마스터일 수 있습니다. 이를 통해 Redis는 단일 루트 복제 트리를 구현할 수 있습니다. Redis 복제본은 쓰기를 허용하도록 구성하여 인스턴스 간의 의도적 또는 비의도적 불일치를 허용할 수 있습니다. 게시-구독 기능은 완전히 구현되므로, 복제본의 클라이언트는 채널을 구독하고 복제 트리의 어디에서나 마스터에게 게시된 메시지의 전체 피드를 수신할 수 있습니다. 복제는 읽기(쓰기는 안 함) 확장성 또는 데이터 이중화에 유용합니다.[60]

성능

데이터의 내구성이 필요하지 않을 때 Redis의 인메모리 특성은 커밋된 트랜잭션을 고려하기 전에 모든 변경 사항을 디스크에 기록하는 데이터베이스 시스템과 비교하여 우수한 성능을 발휘할 수 있도록 합니다.[7] Redis는 단일 프로세스로 작동하며 AOF(첨부 전용 파일)를 다시 쓸 때 단일 스레드 또는 이중 스레드가 됩니다.[61] 따라서 단일 Redis 인스턴스는 저장된 프로시저와 같은 태스크의 병렬 실행을 사용할 수 없습니다.

클러스터링

Redis는 2015년 4월 버전 3.0을 출시하면서 클러스터링을 도입했습니다.[62] 클러스터 사양은 Redis 명령의 하위 집합을 구현합니다. 모든 단일 키 명령을 사용할 수 있고, 다중 키 작업(조합 및 교차로와 관련된 명령)은 동일한 노드에 속하는 키로 제한되며, 데이터베이스 선택 작업과 관련된 명령은 사용할 수 없습니다.[63] Redis 클러스터는 최대 1,000개의 노드를 확장할 수 있으며 "허용 가능한" 쓰기 안전성을 달성하고 일부 노드에 장애가 발생할 경우 작업을 계속할 수 있습니다.[64][65]

사용사례

데이터베이스 설계의 특성상 세션 캐싱, 전체 페이지 캐시, 메시지 큐 애플리케이션, 리더보드 및 카운팅 등이 대표적인 사용 사례입니다.[66] 게시-구독 메시징 패러다임은 서버 간의 실시간 통신을 가능하게 합니다.

Amazon Web ServicesElastiCache for Redis라는 관리형 Redis 서비스를 제공하고, Google은 Cloud Memorystore라는 관리형 Redis 서비스를 제공하고,[67] MicrosoftAzure에서 Azure Cache를 제공하고,[68] AlibabaAlibaba Cloud에서 Redis용 ApsaraDB를 제공합니다.[69]

사용자

Redis는 Twitter,[14][15][70] AirBnB,[16] Tinder,[17] Yahoo,[18] Adobe,[19] Hulu [20]및 Amazon과 같은 회사에서 사용되고 있습니다.[21]

참고 항목

참고문헌

  1. ^ a b Bernardi, Stefano (January 4, 2011). "An interview with Salvatore Sanfilippo, creator of Redis, working out of Sicily". EU-Startups. Menlo Media.
  2. ^ a b Haber, Itamar (July 15, 2015). "Salvatore Sanfilippo: Welcome to Redis Labs". Redis Labs.
  3. ^ "Page 7 of 7 - Redis - Google Code Archive - Long-term storage for Google Code Project Hosting". code.google.com. Retrieved 22 March 2024.
  4. ^ "Release 7.2.4". 9 January 2024. Retrieved 19 January 2024.
  5. ^ "Introduction to Redis". Redis is written in ANSI C and works in most POSIX systems like Linux, *BSD, OS X without external dependencies.
  6. ^ a b c "LICENSE.txt". GitHub. 20 March 2024.
  7. ^ a b c d "FAQ: Redis". Redis.io. Retrieved 12 February 2022.
  8. ^ "Google Groups". groups.google.com. Retrieved 25 February 2022.
  9. ^ "Redis". Redis. Retrieved 2023-07-22.
  10. ^ a b "DB-Engines Ranking - popularity ranking of key-value stores". DB-Engines.
  11. ^ Clark, Lindsay. "Redis becomes the most popular database on AWS as complex cloud application deployments surge". www.theregister.com. Retrieved 2023-07-22.
  12. ^ "Instablinks EP 07: Redis™—The Most Popular In-Memory Database Technology". Instaclustr. Retrieved 2023-07-22.
  13. ^ "DB-Engines Ranking". DB-Engines. Retrieved 2023-07-22.
  14. ^ a b Scaling Redis at Twitter, retrieved 2023-07-22
  15. ^ a b Using Redis at Scale at Twitter - by Rashmi Ramesh of Twitter - RedisConf17 -, retrieved 2023-07-22
  16. ^ a b AWS re:Invent 2018: Airbnb's Journey from Self-Managed Redis to ElastiCache for Redis (DAT319), retrieved 2023-07-22
  17. ^ a b "Building resiliency at scale at Tinder with Amazon ElastiCache AWS Database Blog". aws.amazon.com. 2020-01-30. Retrieved 2023-07-22.
  18. ^ a b AWS re:Invent 2022 - How Yahoo cost optimizes their in-memory workloads with AWS (DAT321), retrieved 2023-07-22
  19. ^ a b AWS re:Invent 2014 (SDD402) Amazon ElastiCache Deep Dive, retrieved 2023-07-22
  20. ^ a b "Hulu Case Study". Amazon Web Services, Inc. Retrieved 2023-07-22.
  21. ^ a b "Amazon GameOn Database Migration Case Study – Amazon Web Services (AWS)". Amazon Web Services, Inc. Retrieved 2023-07-22.
  22. ^ "Elevated API Errors". status.openai.com. Retrieved 2023-10-28.
  23. ^ "A conversation with Salvatore Sanfilippo, creator of the open-source database Redis". VentureBeat. 2016-06-20. Retrieved 2021-06-29.
  24. ^ Kepes, Ben (July 15, 2015). "Redis Labs hires the creator of Redis, Salvatore Sanfilippo". Network World. Retrieved August 30, 2015.
  25. ^ Francisco, Thomas Claburn in San. "Database maestro Antirez says arrivederci to Redis: Seems he wants an unstructured life writing code, not a structured one managing software". www.theregister.com. Retrieved 2021-06-29.
  26. ^ "Database startup Redis Labs rebrands as ... just Redis". SiliconANGLE. 2021-08-11. Retrieved 2021-08-11.
  27. ^ Claburn, Thomas. "Redis has a license to kill: Open-source database maker takes some code proprietary". www.theregister.com. Retrieved 2024-03-21.
  28. ^ Sanfilippo, Salvatore (April 28, 2017). "Tcl prototype of Redis". GitHub Gist. Retrieved October 8, 2018.
  29. ^ Wanstrath, Chris (November 3, 2009). "Introducing Resque". Blog. Retrieved October 8, 2018.
  30. ^ Krieger, Mike (October 31, 2011). "Storing hundreds of millions of simple key-value pairs in Redis". Instagram Engineering Blog. Retrieved October 8, 2018.
  31. ^ Shapira, Gwen (March 17, 2010). "VMware Hires Redis Key Developer – But Why?". Blog. Retrieved September 25, 2016.
  32. ^ Sanfilippo, Salvatore (March 15, 2010). "VMware: the new Redis home". Blog. Retrieved September 25, 2016.
  33. ^ Collison, Derek (March 15, 2010). "VMware: The Console: VMware hires key developer for Redis". VMware Blog. Archived from the original on March 22, 2010. Retrieved September 25, 2016.
  34. ^ Sanfilippo, Salvatore. "Redis Sponsors". Redis.io. Redis Labs. Retrieved April 11, 2019.
  35. ^ Sanfilippo, Salvatore (July 15, 2015). "Thanks Pivotal, Hello Redis Labs". <antirez>. Retrieved 2019-04-03.
  36. ^ Claburn, Thomas. "Redis has a license to kill: Open-source database maker takes some code proprietary". www.theregister.com. Retrieved 2024-03-21.
  37. ^ a b c "Redis 5.0 is here!". 22 October 2018.
  38. ^ "Database maestro Antirez says arrivederci to Redis: Seems he wants an unstructured life writing code, not a structured one managing software". theregister.com.
  39. ^ "The end of the Redis adventure -". antirez.com. Retrieved 2020-11-10.
  40. ^ "Best NoSQL Databases: Fall 2015 Report from G2 Crowd". G2 Crowd. Archived from the original on 2015-08-24. Retrieved 2015-08-25.
  41. ^ "8 Surprising Facts about Real Docker Adoption". Datadog. 13 June 2018.
  42. ^ "🏆 The Top 50 Developer Tools of 2019". StackShare. Retrieved 2020-07-28.
  43. ^ "Developer Survey Results 2021: Most Loved, Dreaded, and Wanted Databases". Stack Overflow. Stack Exchange. Retrieved 2021-08-23.
  44. ^ "EVAL – Redis". redis.io.
  45. ^ a b "Redis". redis.io.
  46. ^ "Danieleteti/Delphiredisclient". GitHub. 17 September 2022.
  47. ^ Lewis, B. W. (5 July 2015). "rredis: "Redis" Key/Value Database Client". The Comprehensive R Archive Network. Retrieved 2019-04-03.
  48. ^ "Redis 3.2 Release Notes". GitHub. Retrieved 2017-03-10.
  49. ^ "Redis Licensing Overview". Redis. Retrieved 2023-09-30.
  50. ^ "RedisJSON - a JSON data type for Redis".
  51. ^ "RedisJSON - a JSON data type for Redis". redisjson.io.
  52. ^ RediSearch, RediSearch, 2023-09-30, retrieved 2023-09-30
  53. ^ "RedisTimeSeries - Time-Series data structure for Redis".
  54. ^ "RedisBloom - Probabilistic Datatypes Module for Redis".
  55. ^ "Modules". Redis. Retrieved 2023-09-30.
  56. ^ "RedisGraph - a graph database module for Redis".
  57. ^ Kogan, Lior (2023-07-05). "RedisGraph End-of-Life Announcement". Redis. Retrieved 2023-09-30.
  58. ^ FalkorDB, FalkorDB, 2023-09-29, retrieved 2023-09-30
  59. ^ "Virtual Memory". Redis.io. Retrieved April 11, 2019.
  60. ^ "Google Code Archive - Long-term storage for Google Code Project Hosting". code.google.com.
  61. ^ "Redis on the Raspberry Pi: adventures in unaligned lands - <antirez>". antirez.com.
  62. ^ "Redis 3.0 Release Notes". GitHub. Retrieved 2017-03-10.
  63. ^ "Cluster Spec". Retrieved 2017-03-10.
  64. ^ "Cluster Spec". Retrieved 2017-03-10.
  65. ^ "Cluster Tutorial". Retrieved 2017-03-10.
  66. ^ "Top 5 Redis use cases - ObjectRocket". ObjectRocket. Rackspace. 7 November 2017.
  67. ^ "Memorystore: in-memory data store". Google Cloud. Retrieved 2023-02-03.
  68. ^ "Azure Redis Cache - Redis cache cloud service - Microsoft Azure". azure.microsoft.com.
  69. ^ "ApsaraDB for Redis: A Key Value Database Service - Alibaba Cloud". www.alibabacloud.com.
  70. ^ "How Twitter Uses Redis to Scale - 105TB RAM, 39MM QPS, 10,000+ Instances - High Scalability". Highscalability.com.

추가읽기

외부 링크