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

Node.js용 Redis OM 소개

JavaScript 및 TypeScript를 위한 빠르고 쉬운 개체 매핑

저는 글을 썼습니다. 사실 우리 중 여러 명이 글을 썼습니다. 저는 방금 Node.js 버전을 썼습니다. 당신의 관심을 받을 만한 꽤 멋진 일이라고 생각하고, 나는 그것에 대해 흥분합니다. 내가 말하는 것:Node.js용 Redis OM.

레디스 OM이 무엇인가요? Redis OM은 Redis 데이터 구조를 코드에 직접 매핑하여 Redis를 쉽게 사용할 수 있도록 하는 라이브러리입니다. OM 비트는 객체 매핑을 나타냅니다. , 하지만 앞으로는 그 이상을 할 계획입니다.

자세한 내용은 계속 읽어보세요.

빠른 것보다 빠름

Redis가 빠른 것보다 빠르다는 것을 이미 알고 계실 것입니다. Redis는 해시, 목록, 집합 등 프로그램에서 관심을 갖는 항목을 저장합니다. 이것이 내가 프로그래머로서 생각하는 구조입니다. 초보 기술자에게 Redis가 무엇인지 설명할 때 Redis는 대학에서 배운 모든 데이터 구조 앞에 와이어 프로토콜이 배치되어 있다고 말합니다.

모듈은 new를 도입하여 Redis를 더욱 멋지게 만듭니다. 프로그램이 관심을 가질 데이터 구조. RedisBloom은 Bloom 및 Cuckoo 필터와 같은 확률적 데이터 구조를 추가합니다. RedisGraph를 사용하면 Cypher를 사용하여 그래프를 저장하고 쿼리할 수 있습니다. RedisAI는 놀라운 AI ​​사물을 위한 텐서를 제공합니다. 모두 매우 유용합니다.

가장 멋진 모듈

그러나 Redis를 모든 프로그래머가 원하는 강력한 인메모리 데이터베이스로 만드는 두 가지 모듈이 있습니다. 바로 RedisJSON과 RediSearch입니다.

RedisJSON은 테이블에 계층 구조를 가져옵니다. 해시는 훌륭하지만 해시에 해시를 포함하려면 어떻게 해야 할까요? RedisJSON을 사용하면 내 계층적 데이터를 JSON 문서에 저장할 수 있습니다.

한편, RediSearch를 사용하면 찾을 관심 있는 데이터 구조. 물론 집합을 사용하여 수동 인덱스를 만들 수 있지만 그 접근 방식은 제한적이고 수동입니다. 왝. RediSearch를 사용하면 원하는 데이터로 바로 이동하는 쿼리를 작성할 수 있습니다.

RediSearch와 RedisJSON이 결합되어 Redis는 꽤 멋진 문서 데이터베이스입니다. 원하는 계층 구조와 관심 있는 항목을 찾을 수 있는 기능을 얻을 수 있습니다. 두 가지 모두에서 최고입니다.

사실, 우리는 이것이 정말 맛있는 조합이라고 생각합니다. 우리는 그것들을 합쳐서 RedisJSON이라고 부르고 있습니다.

Node.js용 Redis OM

RediSearch의 쿼리 언어는 강력합니다. 아주 세다. Redis 내에서 다양하고 정교한 방법으로 해시 및 JSON 문서를 검색할 수 있습니다. 그리고 그 모든 힘이 필요할 때, 그것은 매우 멋집니다. 그러나 때때로 나는 그 모든 힘이 필요하지 않습니다. 그리고 저는 입니다 게으른 개발자—가능한 한 쉽고(더 쉽지는 않은) 개발자가 되기를 바랍니다.

가능한 한 쉽게 만드는 것이 Node.js용 Redis OM을 작성할 때 하려고 했던 것입니다. Redis OM을 사용하면 해시 및 JSON 문서를 정의한 클래스에 매핑하여 Node.js 애플리케이션에 Redis를 간단하게 추가할 수 있습니다. 복잡한 명령이 없으며 유창한 인터페이스가 있는 순수한 코드입니다. 살펴보세요.

엔티티 정의:

새 항목을 만들고 저장:

일치하는 항목 검색:

지금은 이 라이브러리 등을 작성한 이후로 상당히 편향되어 있지만, 꽤 괜찮은 것 같아요! 이 구문을 자세히 살펴보고 어떻게 작동하는지 알아보겠습니다.

작동 방식

Node.js용 Redis OM에는 4가지 클래스가 있습니다. 엔티티, 스키마, 클라이언트 및 저장소입니다.

개체 함께 작업하는 클래스입니다. 생성되고, 읽고, 업데이트되고, 삭제되는 것들. 검색되는 것들. Entity를 확장하는 모든 클래스는 엔터티입니다. 일반적으로 한 줄의 코드로 엔티티를 정의하지만 여기에 사용자 정의 로직을 추가할 수도 있습니다.

스키마 엔터티의 필드, 해당 유형 및 Redis에 내부적으로 매핑되는 방법을 정의합니다. 기본적으로 엔티티는 Redis의 해시에 매핑되지만 JSON 문서에 매핑할 수도 있습니다.

스키마를 생성하면 전달한 엔티티를 수정하여 정의한 속성에 대한 getter 및 setter를 추가합니다. getter 및 setter가 허용하고 반환하는 유형은 위의 type 속성으로 정의됩니다.

고객 Redis에 연결합니다. 클라이언트에는 Redis에 대해 원시 명령을 열고 닫고 실행하는 방법이 있습니다. 주로 열기 및 닫기를 사용합니다.

리포지토리를 인스턴스화하려면 스키마와 클라이언트가 필요합니다. 저장소 엔티티를 읽고, 쓰고, 제거하는 수단을 제공합니다. 그리고 그들을 찾는 수단:

저장소가 있으면 이를 사용하여 엔티티를 생성, 읽기, 업데이트 및 삭제할 수 있습니다. 제가 좋아하는 Mushroomhead의 앨범으로 바로 그 일을 하고 있습니다.

엔티티를 검색하는 데 사용할 수도 있습니다.

그리고 복사하여 붙여넣기의 편의를 위해 다음은 하나의 큰 코드 블록으로 된 샘플입니다.

간단히 말해서 Node.js용 Redis OM입니다.

마무리

이것은 Node.js용 Redis OM이 할 수 있는 일에 대한 간략한 개요였습니다. 더 자세히 알고 싶다면 Redis OM으로 간단한 서비스를 구축하는 과정을 안내하는 튜토리얼이 있습니다. 그리고 더 깊이 들어가고 싶으시다면 GitHub에서 README 및 API 문서를 확인하세요.

물론 이것은 아직 야생에서 테스트되지 않은 새로운 소프트웨어입니다. 당신 야생입니다. 사용해 보십시오. 타이어를 걷어차십시오. 그것을 부숴보십시오. 거기에 무엇이 있고 무엇이 있을 수 있는지 보십시오. 그리고 해당 버그를 찾거나 완벽한 기능이 생각나면 문제를 열거나 풀 리퀘스트를 보내 알려주세요. Redis OM을 개선하는 데 도움을 주셔서 진심으로 감사드립니다. 감사합니다!