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

Redis OM Spring 소개

Redis 및 Spring을 위한 객체 매핑 등

Redis OM Spring은 도메인을 모델링하고 Spring 애플리케이션의 Redis에 데이터를 유지하는 데 도움이 되도록 설계된 새로운 클라이언트 라이브러리입니다. 라이브러리는 오픈 소스 Redis와 함께 작동하지만 RedisJSON과 함께 사용할 경우 많은 추가 인덱싱 및 쿼리 기능을 제공합니다.

Redis는 모듈과 결합하여 지구상에서 가장 빠른 데이터 플랫폼 중 하나를 만듭니다. 그러나 속도를 활용하는 것이 항상 쉬운 것은 아닙니다. Redis OM Spring은 매력적인 개발자 경험을 제공하며 이 게시물에서는 이를 통해 무엇을 구축할 수 있는지 보여 드리겠습니다.

동기

개발자로서 강력하면서도 단순한 기술을 발견하는 경우는 드뭅니다. OSS Redis만 사용하면 엔터프라이즈 애플리케이션에 필요한 많은 데이터 지향 및 메시징 작업을 수행하기 위한 다수의 데이터 구조 및 관련 명령이 있습니다.

마찬가지로 엔터프라이즈 Java 개발의 세계에서 Spring은 지난 18년 동안 기능이 풍부한 대규모 애플리케이션을 빌드하는 복잡성을 길들였습니다. 이 공간에서 Redis는 OSS Redis와 상호 작용하기 위한 저수준 및 고수준 추상화를 모두 제공하는 놀라운 Spring Data Redis에 의해 지원되었습니다.

Spring Data Redis를 사용할 때의 어려움 중 하나는 Redis 모듈을 지원하지 않는다는 것입니다. 여기 Redis에서 우리는 검색, JSON 인덱싱 및 쿼리, 그래프 데이터, 시계열 데이터, 서버 측 계산을 위한 완전한 프레임워크(Redis Gears)를 통해 Redis 핵심 데이터 구조를 풍부하게 하는 몇 가지 획기적인 Redis 모듈을 개발합니다. 우리는 이러한 모듈을 활용하고 훨씬 더 광범위한 기능을 제공하기 위해 Redis OM Spring을 구축했습니다.

레디스 OM 스프링

Redis OM 클라이언트 라이브러리 제품군은 선택한 언어/플랫폼에 대해 관용적으로 구현된 높은 수준의 추상화를 제공하는 것을 목표로 합니다. 우리는 현재 Node.js, Python, .NET 및 Spring 커뮤니티에 서비스를 제공하고 있습니다. Redis OM Spring을 사용하면 개발자가 Redis의 기능을 Spring Boot 애플리케이션에 쉽게 추가할 수 있습니다.

특히 Redis OM Spring은 놀라운 SDR(Spring Data Redis) 프레임워크를 기반으로 구축된 강력한 저장소 및 사용자 지정 개체 매핑 추상화를 제공합니다.

현재 미리 보기 릴리스는 모든 Spring Data Redis 기능과 함께 다음을 제공합니다.

  • Java에서 JSON으로의 매핑
  • 향상된 해시 매핑
  • 자동 검색 색인 생성
  • RediSearch가 지원하는 Spring 데이터 저장소

Java에서 JSON으로의 매핑

RedisJSON을 사용하여 Java 객체를 Redis에 저장된 JSON 문서에 매핑하려면

@Document
를 사용할 수 있습니다. 주석. 다른 Spring Data 엔티티 매핑 주석과 마찬가지로 클래스 선언에 추가합니다. 예를 들어
Company
유형의 개체를 매핑한다고 가정해 보겠습니다. .
@Document
를 추가하기만 하면 됩니다. 아래와 같이:

이 클래스의 본문에 여러 주석이 있음을 알 수 있습니다.

@Id
Spring Data에서 가져오고
id
를 선언합니다. 속성을 JSON 문서를 저장할 Redis 키로 사용합니다.

틀림없이 Spring Data 라이브러리 제품군의 가장 인기 있는 기능은 선언적 데이터 저장소입니다. 다음 두 주석을 사용하면 RediSearch를 사용하여 JSON 문서를 인덱싱할 수 있습니다. 이것은

RedisDocumentRepository
를 통해 노출됩니다. 인터페이스:

빈 저장소 선언만 있으면 POJO에 대한 기본 CRUD 기능/페이지 매김 및 정렬을 얻을 수 있습니다.

Redis OM Spring은

@Indexed
주석이 달린 POJO 필드를 사용합니다. 또는
@Searchable
인덱스 스키마를 빌드합니다.
Company
의 경우 POJO에는 "검색 가능"으로 주석이 달린 이름 속성이 있습니다. 즉, 해당 필드에 대한 전체 텍스트 검색 기능을 사용할 수 있습니다. 이것은 스키마 필드 정의
$.name AS name TEXT
에 반영됩니다. .

반면에 필드 태그에는 "인덱싱 가능"으로 주석이 지정되어 있습니다. 즉, TAG 유형의 인덱스 필드를 얻습니다. 즉, 필드의 정확한 값으로 회사를 검색할 수 있습니다. 이것은 다시 스키마 필드 정의에 반영됩니다.

$.tags[*] AS tags TAG

간단한 동적 쿼리 만들기

Redis OM Spring의 가장 강력한 기능은 아마도 런타임에 저장소 인터페이스에서 저장소 구현을 자동으로 생성하는 기능일 것입니다. 적절한 필드가 인덱싱되면 추가 코드를 작성하지 않고도 아래의 모든 쿼리를 수행할 수 있습니다.

저장소 프록시에는 메서드 이름에서 저장소별 쿼리를 파생시키는 두 가지 방법이 있습니다.

  • 메서드 이름에서 직접 쿼리 파생
  • @Query
    를 사용하여 수동으로 정의된 쿼리 사용 또는
    @Aggregation
    주석.

저장소 인터페이스에 추가된 몇 가지 메서드 선언을 살펴보겠습니다.

OneByName 찾기

Redis OM Spring은 메소드 이름과 매개변수를 사용하여 적절한 쿼리를 생성합니다. 메서드 반환 유형을 사용하여 결과를 패키징하고 반환하는 방법을 결정합니다.

findOneByName
Optional of Company
을 반환합니다. .
findOne
또한 여러 결과가 있더라도 하나의 결과만 반환됨을 의미합니다. 라이브러리는 메서드 이름을 구문 분석하여 예상 매개변수의 수를 결정합니다. 예를 들어,
ByName
메소드의 일부는
name
이라는 단일 매개변수가 필요하다는 것을 알려줍니다. .

findByLocationNear

Redis OM Spring은 GeoJSON 유형을 지원하여 지리 공간 데이터를 저장합니다.

near
를 사용하여 키워드를 사용하여
Point
를 예상하도록 코드에 지시하고 있습니다.
(org.springframework.data.geo.Point)
Distance (org.springframework.data.geo.Distance)
매개변수로 입력하십시오.

저장소 사용

다른 Spring 데이터 저장소와 마찬가지로 저장소를 다른 Spring 구성 요소에 삽입할 수 있습니다.

마무리

이것은 미리보기일 뿐입니다. Redis OM Spring 출시. 아직 구축할 것이 많이 있지만 지금은 여러분의 도움이 필요합니다! Spring 애플리케이션에 프로젝트를 설치하는 방법에 대한 자세한 내용은 README를 확인할 수 있습니다. 여러분의 피드백, PR 및 문제를 환영합니다!