Computer >> 컴퓨터 >  >> 프로그램 작성 >> Redis

Redis 7.0:첫 번째 릴리스 후보가 나왔습니다!

새 버전은 Redis의 일부 기능에 대한 진화 단계이며 새로운 기능을 추가하고 더 나은 리소스 활용으로 더 많은 원시 성능을 제공합니다.

오늘 Redis v7의 첫 번째 릴리스 후보(RC1)가 출시되었음을 자랑스럽게 발표합니다. 버전 7.0은 작년의 더 나은 부분을 위해 개발 중인 프로젝트의 중요한 이정표입니다. 이 주요 릴리스는 기능 및 내부 측면에서 보다 근본적인 변경을 수행할 수 있는 기회입니다. 우리는 일반적인 릴리스 주기를 따를 것으로 예상하므로 Redis 7.0의 일반 출시 전에 각각 약 3주 간격으로 2명의 추가 후보가 계획되어 있습니다.

Redis 7.0에는 Functions, ACL v2, 샤딩된 Pub/Sub 등과 같은 많은 새로운 기능이 추가되었습니다. 이번 포스트와 다음 포스트 시리즈에서 이에 대해 다룰 것입니다. 또한, 이 버전에 투입된 많은 작업은 대부분의 사용자에게 잘 보이지 않는 Redis 부분을 개선하고 최적화하는 데 중점을 두었습니다. 이러한 노력은 지속성, 복제, 네트워크, 메모리 및 컴퓨팅 사용량을 다루는 거의 모든 Redis 하위 시스템에 적용되었습니다. 그 결과 그 어느 때보다 빠르고 안정적이며 경제적인 Redis가 탄생했습니다.

새로운 Redis 버전은 새로운 데이터 구조를 예고하거나 운영 측면을 새로운 영역으로 푸시하지 않습니다. 대신 프로젝트를 성찰하고, 기존 설계 가정에 도전하고, 인프라 개선을 위한 더 과감한 조치를 취하고, 커뮤니티의 요구와 사용 사례를 내면화하는 것이 더 중요합니다.

Redis 함수는 위의 예입니다. 기능은 Redis를 프로그래밍할 수 있는 기능을 의미하는 Redis Programmability라는 더 넓은 주제에 속합니다. "Redis를 프로그래밍"한다는 것은 주로 데이터 지역성을 위해 서버가 사용자 로직을 실행하도록 하는 것을 의미합니다. 프로그래밍 기능은 버전 2.6의 Lua 스크립트 도입 이후 Redis의 일부였습니다(자세한 내용은 Eval 스크립트 소개 참조).

Redis 사용자의 Lua 스크립트 채택은 그 이후로 증가하고 있습니다. 스크립트는 핵심 Redis 작업 및 제어 구조에서 서버 측 워크플로를 구성하는 효과적이고 간단한 방법을 제공합니다. 애플리케이션의 기본 코드에서 기본 데이터 구조를 추상화하는 역할을 할 수 있습니다. 애플리케이션의 Lua 스크립트 세트는 논리적 작업(예:"사용자 추가" 또는 "주문하기" 스크립트)을 구현합니다.

스크립팅은 오랫동안 사용되어 온 인기 있는 Redis 기능이기 때문에 이에 대한 많은 피드백을 수집했습니다. 우리는 대부분의 요구 사항이 다음 세 가지 버킷으로 분류된다는 것을 발견했습니다.

  1. 독립성 :스크립트는 응용 프로그램의 일부입니다. 내부를 반영하므로 구현과 밀접하게 연결됩니다. 응용 프로그램은 스크립트의 소스 코드를 포함하고 런타임에 로드해야 합니다. 이러한 얽힘은 개발에서 테스트, 배포에 이르기까지 애플리케이션 수명 주기의 모든 단계에서 복잡성을 증가시킵니다.
<올 시작="2">
  • 실행 엔진 :Redis에서 스크립트를 작성하는 언어는 Lua뿐입니다. 게다가, 수많은 기술적 이유 때문에 Redis는 지금까지 동일한 Lua 5.1을 사용해 왔습니다. 많은 사람들이 최신 버전을 원합니다. 대부분은 완전히 다른 언어를 원합니다.
  • <올 시작="3">
  • 견고성 :Redis에서 Lua 스크립팅의 설계 및 구현은 다른 소프트웨어와 마찬가지로 가정을 하고 한계가 있습니다. 경우에 따라 메커니즘 확장이 불가능하지는 않더라도 매우 복잡해집니다. 기반이 부족하면 잠재적으로 가치 있는 기능(예:이벤트 처리 및 클러스터 스크립트)을 추가할 수 없습니다.
  • Redis Functions로 돌아갑니다. Redis 7.0에서 기능은 애플리케이션과 완전히 독립적입니다. 결과적으로 함수는 일류 데이터베이스 시민인 실행 가능한 소프트웨어 아티팩트입니다. Redis 서버는 사용자 데이터처럼 기능을 관리하므로 가용성을 위해 지속되고 복제됩니다. 데이터베이스에 기능을 로드하는 것은 더 이상 런타임 동안 애플리케이션의 책임이 아니며 예약 및 관리할 수 있는 관리 유지 관리 작업이 됩니다.

    함수가 서버 컨텍스트에 상주하면 애플리케이션이 함수 구현에서 해방됩니다. 대신, 애플리케이션은 내장된 로직에 대한 API로 함수 서명에 의존하고 실행 중인 Redis 명령 및 유형을 완전히 잊습니다. 다른 응용 프로그램이 기능을 공유할 수 있습니다. 또한 애플리케이션에 대한 필수 종속성 없이 기능을 개발, 테스트 및 유지 관리할 수 있습니다.

    Redis Functions의 설계는 엔진에 구애받지 않습니다. Redis 7.0은 Lua 5.1로 작성된 기능만 지원하지만 내부 구현은 다른 실행 엔진과 거의 연결될 준비가 되어 있습니다. 앞으로 더 많은 유형의 실행 엔진에 대한 지원을 추가할 계획입니다.

    함수가 만드는 또 다른 패러다임 전환은 라이브러리의 사용입니다. 라이브러리는 하나 이상의 등록된 기능과 추가 내부 기능으로 구성될 수 있습니다. 등록된 함수는 라이브러리의 진입점과 애플리케이션의 계약 API입니다. 반면에 내부 함수는 코드 재사용성을 위해 라이브러리 내부에서 기본적으로 호출될 수 있습니다.

    Redis 7.0의 기능 도입은 Redis의 프로그래밍 가능성을 한 단계 끌어올리는 데 큰 진전이 될 것으로 기대합니다. 애플리케이션에서 이미 Lua 스크립트를 사용하고 있는 경우 함수 사용으로 마이그레이션하는 것은 선택 사항이며 간단합니다(자세한 내용은 Redis 함수 참조). 더욱 좋은 점은 앞으로 나아갈수록 기능이 Redis 프로그래밍 기능을 통해 개선하고 혁신할 수 있는 더 나은 기반을 제공한다는 것입니다.