Computer >> Máy Tính >  >> Lập trình >> Redis

Giới thiệu Redis OM Spring

Ánh xạ đối tượng và hơn thế nữa, cho Redis và Spring

Redis OM Spring là một thư viện ứng dụng khách mới được thiết kế để giúp bạn lập mô hình miền của mình và lưu giữ dữ liệu vào Redis trong các ứng dụng Spring của bạn. Thư viện hoạt động với mã nguồn mở Redis nhưng cung cấp nhiều khả năng lập chỉ mục và truy vấn bổ sung khi được sử dụng với RedisJSON.

Redis, kết hợp với các mô-đun 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 không phải lúc nào cũng dễ dàng tận dụng được tốc độ của nó. Redis OM Spring cung cấp trải nghiệm hấp dẫn dành cho nhà phát triển và trong bài đăng 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

Với tư cách là một nhà phát triển, hiếm khi tình cờ gặp được một công nghệ vừa mạnh mẽ vừa đơn giản. Chỉ với OSS Redis, bạn có một loạt các cấu trúc dữ liệu và các lệnh liên quan để thực hiện nhiều tác vụ hướng dữ liệu và nhắn tin mà các ứng dụng doanh nghiệp cần.

Tương tự, trong thế giới phát triển Java dành cho doanh nghiệp, trong 18 năm qua, Spring đã khắc phục được sự phức tạp của việc xây dựng các ứ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ả trừu tượng cấp thấp và cấp cao để tương tác với OSS Redis.

Một trong những thách thức khi sử dụng Spring Data Redis là nó không hỗ trợ các mô-đun Redis. Tại Redis, chúng tôi phát triển một số mô-đun Redis thay đổi trò chơi để làm phong phú cấu trúc dữ liệu cốt lõi của Redis với tính năng tìm kiếm, lập chỉ mục JSON và truy vấn, dữ liệu biểu đồ, dữ liệu chuỗi thời gian và một khung hoàn chỉnh cho tính toán phía máy chủ (Redis Gears). Chúng tôi đã xây dựng Redis OM Spring để tận dụng các mô-đun này và cung cấp một loạt các khả năng thậm chí còn rộng hơn.

Redis OM Spring

Dòng thư viện khách Redis OM nhằm mục đích cung cấp các bản tóm tắt cấp cao được triển khai một cách thành ngữ cho ngôn ngữ / nền tảng mà bạn lựa chọn. Chúng tôi hiện đang phục vụ cho 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 các ứng dụng Spring Boot của họ.

Cụ thể, Redis OM Spring cung cấp một kho lưu trữ mạnh mẽ và các bản tóm tắt ánh xạ đối tượng tùy chỉnh được xây dựng trên khung Spring Data Redis (SDR) tuyệt vời.

Bản phát hành xem trước hiện tại cung cấp tất cả các khả năng của Spring Data Redis, cùng với:

  • Ánh xạ Java sang JSON
  • Ánh xạ băm nâng cao
  • Tạo chỉ mục tìm kiếm tự động
  • Kho lưu trữ dữ liệu mùa xuân được hỗ trợ bởi RediSearch

Ánh xạ Java sang JSON

Để ánh xạ các đối tượng Java sang tài liệu JSON được lưu trữ trong Redis bằng RedisJSON, bạn có thể sử dụng

@Document
chú thích. Giống như bất kỳ chú thích ánh xạ thực thể Spring Data nào khác, bạn thêm nó vào khai báo lớp. Ví dụ:hãy tưởng tượng bạn muốn ánh xạ các đối tượng thuộc loại
Company
. Chỉ cần thêm
@Document
như hình dưới đây:

Bạn có thể nhận thấy rằng phần thân của lớp này có một số chú thích.

@Id
đến từ Dữ liệu mùa xuân và nó khai báo
id
là khóa Redis sẽ lưu trữ tài liệu JSON của chúng tôi.

Có thể cho rằng tính năng phổ biến nhất của họ thư viện Spring Data là Kho dữ liệu khai báo. Hai chú thích tiếp theo cho phép bạn sử dụng RediSearch để lập chỉ mục các tài liệu JSON. Điều này được hiển thị qua

RedisDocumentRepository
giao diện:

Khai báo kho lưu trữ trống là tất cả những gì bạn cần để có được chức năng CRUD cơ bản / phân trang và sắp xếp cho các POJO của bạn.

Redis OM Spring sử dụng các trường POJO được chú thích bằng

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

Mặt khác, các thẻ trường được chú thích là “có thể lập chỉ mục”, có nghĩa là chúng tôi nhận được trường chỉ mục thuộc loại TAG, nghĩa là chúng tôi có thể tìm kiếm Công ty theo giá trị chính xác của trường. Điều này, một lần nữa, được phản ánh trong định nghĩa trường lược đồ:

$.tags[*] AS tags TAG

Tạo truy vấn động đơ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 các triển khai kho lưu trữ tự động, trong thời gian chạy, từ giao diện kho lưu trữ. Với các trường thích hợp được lập chỉ mục, giờ đây bạn có thể đáp ứng tất cả các truy vấn bên dưới mà không cần phải viết thêm bất kỳ mã nào:

Proxy kho lưu trữ có hai cách để lấy một truy vấn dành riêng cho cửa hàng từ tên phương thức:

  • Bằng cách lấy truy vấn trực tiếp từ tên phương thức.
  • Bằng cách sử dụng truy vấn được xác định theo cách thủ công bằng
    @Query
    hoặc
    @Aggregation
    chú thích.

Chúng ta hãy kiểm tra một vài khai báo phương thức được thêm vào giao diện kho lưu trữ.

findOneByName

Redis OM Spring sử dụng tên phương thức và các tham số để tạo truy vấn thích hợp. Nó sử dụng kiểu trả về của 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ụ ý rằng chỉ một kết quả sẽ được trả về, ngay cả khi có nhiều kết quả. Thư viện phân tích cú pháp tên phương thức để xác định số lượng các tham số mong đợi. Ví dụ:
ByName
một phần của phương thức cho chúng tôi biết rằng chúng tôi mong đợi một tham số duy nhất có tên là
name
.

findByLocationNear

Redis OM Spring hỗ trợ các loại GeoJSON để lưu trữ dữ liệu không gian địa lý. Bằng cách sử dụng

near
từ khóa trong các truy vấn của chúng tôi, chúng tôi đang nói với mã của mình để mong đợi một
Point
(org.springframework.data.geo.Point)
Distance (org.springframework.data.geo.Distance)
nhập dưới dạng tham số.

Sử dụng Kho lưu trữ

Như với các Kho lưu trữ dữ liệu Spring khác, bạn có thể đưa một kho lưu trữ vào một thành phần Spring khác:

Kết thúc

Đây chỉ là một bản xem trước phát hành Redis OM Spring. Vẫn còn nhiều thứ phải xây dựng, nhưng hiện tại, chúng tôi cần sự trợ giúp của bạn! Bạn có thể xem README để biết chi tiết về cách cài đặt dự án trong ứng dụng Spring của bạn. Chúng tôi hoan nghênh phản hồi, PR và các vấn đề của bạn!