Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Redis

Redis OM Spring: Trao Quyền Cho Ứng Dụng Spring Với Object Mapping Redis Nhanh, Mạnh Mẽ

Object Mapping, và hơn thế, cho Redis và Spring

Redis OM Spring là một thư viện client mới được thiết kế để giúp bạn mô hình hóa domain (miền) và lưu trữ dữ liệu vào Redis trong các ứng dụng Spring của bạn. Thư viện làm việc với open source Redis nhưng cung cấp nhiều khả năng indexing và querying bổ sung khi dùng với RedisJSON.

Redis, kết hợp với các module của nó, tạo nên một trong những nền tảng dữ liệu nhanh nhất trên hành tinh. Nhưng chưa bao giờ dễ dàng để tận dụng tốc độ của nó. Redis OM Spring cung cấp một trải nghiệm nhà phát triển hấp dẫn, và trong bài này tôi sẽ chỉ cho bạn những gì bạn có thể xây dựng với nó.

Động lực

Hiếm khi, như một nhà phát triển, bạn ngẫu nhiên gặp một công nghệ vừa mạnh mẽ vừa đơn giản. Với OSS Redis đơn lẻ, bạn có rất nhiều cấu trúc dữ liệu và lệnh liên quan để thực hiện nhiều nhiệm vụ hướng dữ liệu và messaging cần thiết cho ứng dụng doanh nghiệp.

Tương tự, trong thế giới phát triển Java doanh nghiệp, Spring đã, trong 18 năm qua, thuần phục sự phức tạp của việc xây dựng ứng dụng lớn, giàu tính năng. Trong không gian này, Redis đã được hỗ trợ bởi Spring Data Redis tuyệt vời, cung cấp cả abstraction (trừu tượng) low-level và high-level để tương tác với OSS Redis.

Một trong những thách thức khi dùng Spring Data Redis là nó không hỗ trợ các module Redis. Ở đây tại Redis, chúng tôi phát triển một số module Redis thay đổi cuộc chơi làm giàu cấu trúc dữ liệu cốt lõi của Redis với tìm kiếm, JSON indexing và querying, dữ liệu đồ thị, dữ liệu time series, và một framework hoàn chỉnh cho computation phía server (Redis Gears). Chúng tôi xây dựng Redis OM Spring để tận dụng các module này và cung cấp một tập hợp khả năng rộng hơn.

Redis OM Spring

Gia đình thư viện client Redis OM nhằm cung cấp các abstraction high-level được triển khai idiomatic (theo thành ngữ) cho ngôn ngữ/nền tảng bạn chọn. Hiện tại chúng tôi phục vụ cộng đồng Node.js, Python, .NET, và Spring. Redis OM Spring cho phép các nhà phát triển dễ dàng thêm sức mạnh của Redis vào ứng dụng Spring Boot của họ.

Cụ thể, Redis OM Spring cung cấp một repository mạnh mẽ và custom object-mapping abstractions được xây dựng trên framework Spring Data Redis (SDR) tuyệt vời.

Bản phát hành preview hiện tại cung cấp tất cả khả năng Spring Data Redis, cộng thêm:

  • Java to JSON mapping
  • Enhanced Hash mappings
  • Tự động tạo search index
  • Spring Data Repositories backed by RediSearch

Java to JSON Mapping

Để ánh xạ đối tượng Java thành tài liệu JSON lưu trong Redis dùng RedisJSON, bạn có thể dùng annotation

@Document
. Giống như bất kỳ annotation mapping entity Spring Data nào khác, bạn thêm nó vào khai báo lớp. Ví dụ, tưởng tượng bạn muốn map đối tượng kiểu
Company
. Chỉ cần thêm
@Document
như dưới đây:

Bạn có thể nhận thấy thân lớp này có một vài annotation.

@Id
đến từ Spring Data, và nó khai báo thuộc tính
id
như Redis key sẽ lưu tài liệu JSON của chúng ta.

Có lẽ tính năng phổ biến nhất của gia đình thư viện Spring Data là Data Repositories khai báo (declarative). Hai annotation tiếp theo cho phép bạn dùng RediSearch để lập chỉ mục tài liệu JSON. Điều này được lộ ra qua interface

RedisDocumentRepository
:

Khai báo repository rỗng là tất cả bạn cần để có CRUD cơ bản/phân trang và sắp xếp cho POJOs của bạn.

Redis OM Spring dùng các trường POJO được annotate với

@Indexed
hoặc
@Searchable
để xây dựng schema chỉ mục. Trong trường hợp POJO
Company
, chúng ta có thuộc tính name được annotate là "searchable", nghĩa là chúng ta có khả năng tìm kiếm toàn văn trên trường đó. Điều này phản ánh trong định nghĩa trường schema
$.name AS name TEXT
.

Mặt khác, trường tags được annotate là "indexable", nghĩa là chúng ta có trường chỉ mục kiểu TAG, nghĩa là chúng ta có thể tìm kiếm Company bằng giá trị chính xác của trường. Điều này, lại, được phản ánh trong định nghĩa trường schema:

$.tags[*] AS tags TAG

Tạo Dynamic Queries Đơn Giản

Có lẽ tính năng hấp dẫn nhất của Redis OM Spring là khả năng tạo implementation repository tự động, tại runtime, từ một interface repository. Với các trường thích hợp được lập chỉ mục, bạn bây giờ có thể thực hiện tất cả các truy vấn dưới đây mà không cần viết thêm bất kỳ code nào:

Repository proxy có hai cách để dẫn xuất truy vấn cụ thể cho store từ tên phương thức:

  • Bằng cách dẫn xuất truy vấn từ tên phương thức trực tiếp.
  • Bằng cách dùng truy vấn định nghĩa thủ công dùng annotation
    @Query
    hoặc
    @Aggregation
    .

Hãy kiểm tra một vài khai báo phương thức được thêm vào interface repository.

findOneByName

Redis OM Spring dùng tên phương thức và tham số để tạo truy vấn phù hợp. Nó dùng kiểu trả về phương thức để xác định cách đóng gói và trả về kết quả.

findOneByName
trả về
Optional of Company
.
findOne
cũng ngụ ý chỉ một kết quả sẽ được trả về, ngay cả khi có nhiều kết quả. Thư viện parse tên phương thức để xác định số lượng tham số mong đợi. Ví dụ, phần
ByName
của phương thức cho chúng ta biết chúng ta mong đợi một tham số đơn tên
name
.

findByLocationNear

Redis OM Spring hỗ trợ kiểu GeoJSON để lưu dữ liệu địa lý. Bằng cách dùng từ khóa

near
trong truy vấn của chúng ta, chúng ta báo cho code của chúng ta mong đợi một
Point
(org.springframework.data.geo.Point)
và một
Distance (org.springframework.data.geo.Distance)
kiểu làm tham số.

Sử dụng Repository

Giống như các Spring Data Repositories khác, bạn có thể inject một repository vào một Spring component khác:

Kết thúc

Đây chỉ là bản phát hành preview của Redis OM Spring. Còn rất nhiều thứ để xây dựng, nhưng bây giờ chúng tôi cần sự giúp đỡ của bạn! Bạn có thể xem README để biết chi tiết cách cài đặt dự án trong ứng dụng Spring của bạn. Chúng tôi chào đón phản hồi, PR, và issue của bạn!