Chúng tôi vui mừng thông báo về việc phát hành cột mốc đầu tiên trong quá trình phát triển RediSearch 2.0. RediSearch là một công cụ tìm kiếm thời gian thực cho phép bạn truy vấn dữ liệu Redis của mình để trả lời nhiều câu hỏi phức tạp.
Sự kiện quan trọng này, được đặt tên là 2.0-M01, đánh dấu việc tái cấu trúc cách các chỉ số được giữ đồng bộ với dữ liệu. Thay vì phải ghi dữ liệu thông qua chỉ mục (sử dụng FT.ADD ), RediSearch bây giờ sẽ theo dõi dữ liệu được viết trong các hàm băm và tự động lập chỉ mục nó.
Ưu điểm lớn ở đây là giờ đây bạn có thể thêm RediSearch vào phiên bản Redis hiện có của mình và tạo chỉ mục phụ mà không cần phải cập nhật mã ứng dụng của mình. Điều này cho phép bạn ngay lập tức bắt đầu sử dụng RediSearch trên dữ liệu hiện có của mình, chỉ bằng cách tải mô-đun RediSearch và xác định lược đồ. Dự kiến sẽ có sẵn RediSearch 2.0 vào mùa Thu này.
( Lưu ý: Tính năng mới này giới thiệu một số thay đổi đối với API (được liệt kê bên dưới). Chúng tôi cố gắng duy trì khả năng tương thích ngược nhiều nhất có thể, nhưng trong trường hợp này, điều đó là không thể. Chúng tôi có kế hoạch thực hiện các điều chỉnh và sửa chữa trong tương lai khi chúng tôi thu thập phản hồi của khách hàng.)
Thay đổi API
Như đã lưu ý ở trên, mốc RediSearch 2.0 này bao gồm một số thay đổi đối với API:
- Chỉ mục không còn tồn tại trong không gian chính. Ví dụ:nếu bạn đã sử dụng khóa chỉ mục (idx:
) để liệt kê các chỉ mục trong cơ sở dữ liệu, thì điều này sẽ không còn hoạt động nữa. Tuy nhiên, chúng tôi đã giới thiệu một lệnh FT._LIST để trả về tất cả các chỉ số trong cơ sở dữ liệu. - Chỉ mục phải được tạo bằng tiền tố / bộ lọc. Những điều này chỉ định tài liệu nào sẽ được RediSearch tự động lập chỉ mục. Bạn có thể chỉ định một tiền tố đơn giản và / hoặc một biểu thức lọc phức tạp.
- Không thể nâng cấp. Nếu bạn có một RDB được tạo bằng phiên bản RediSearch cũ hơn, RediSearch 2.0 sẽ không thể đọc nó. Hiện tại, bạn sẽ phải lập chỉ mục lại toàn bộ tập dữ liệu. Tuy nhiên, chúng tôi đang làm việc trên một quy trình nâng cấp cho bản phát hành GA.
- Nó chỉ hoạt động với Redis 6 trở lên.
- Các lệnh FT được ánh xạ tới các lệnh tương đương Redis của chúng. Điều này cho phép các ứng dụng hiện có vẫn hoạt động với RediSearch 2.0. Các ánh xạ như sau:
- FT.ADD => HSET
- FT.DEL => DEL (DD theo mặc định)
- FT.GET => HGETALL
- FT.MGET => HGETALL
- Bản thân chỉ mục được đảo ngược không còn được lưu vào RDB . Điều này không có nghĩa là tính bền bỉ không được hỗ trợ. RediSearch lưu định nghĩa chỉ mục vào RDB và lập chỉ mục dữ liệu trong nền sau khi Redis được khởi động. Bạn có thể biết khi nào kết thúc lập chỉ mục lại bằng cách kiểm tra trạng thái lập chỉ mục bằng cách sử dụng FT.INFO lệnh.
API mới
Cập nhật lớn nhất đối với API là cách các chỉ số được tạo. Trong RediSearch 2.0, lệnh FT.CREATE được sử dụng để tạo chỉ số. Các bổ sung cho API được đánh dấu bằng màu vàng ở đây:
FT.CREATE {index} ON {structure} [PREFIX {count} {prefix} [{prefix} ..] [FILTER {filter}] [LANGUAGE_FIELD {lang_field}] [LANGUAGE {lang}] [SCORE_FIELD {score_field}] [SCORE {score}] [PAYLOAD_FIELD {payload_field}] [TEMPORARY {seconds}] [MAXTEXTFIELDS] [NOOFFSETS] [NOHL] [NOFIELDS] [NOFREQS] [STOPWORDS {num} {stopword} ...] SCHEMA {field} [TEXT [NOSTEM] [WEIGHT {weight}] [PHONETIC {matcher}] | NUMERIC | GEO | TAG [SEPARATOR {sep}] ] [SORTABLE][NOINDEX] ...
Hãy cùng tìm hiểu một số chi tiết:
- BẬT {cấu trúc} hiện chỉ hỗ trợ HASH
- PREFIX {count} {prefix} cho chỉ mục biết những khóa nào nó sẽ lập chỉ mục. Bạn có thể thêm một số tiền tố vào chỉ mục. Vì đối số là tùy chọn, mặc định là * (tất cả các phím)
- FILTER {filter} là một biểu thức bộ lọc với ngôn ngữ biểu thức tổng hợp RediSearch đầy đủ. Có thể sử dụng @__key để truy cập vào khóa vừa được thêm / thay đổi
- LANGUAGE và SCORE cho phép bạn ghi đè ngôn ngữ và điểm số mặc định cho tất cả các tài liệu được lập chỉ mục
- LANGUAGE_FIELD , SCORE_FIELD và PAYLOAD_FIELD cho phép bạn có ngôn ngữ và cách tính điểm dành riêng cho tài liệu, đồng thời sử dụng trọng tải như một trường trong tài liệu.
Các hạn chế và thay đổi khác
Sự kiện quan trọng của RediSearch 2.0-M01 cũng mang đến một số cập nhật khác:
- NOSAVE không còn được hỗ trợ.
- Việc cập nhật hàm băm ngụ ý rằng toàn bộ tài liệu sẽ được lập chỉ mục (thông báo về keyspace không giải quyết trường nào đã được thay đổi). Vì vậy, cập nhật từng phần sẽ chậm hơn. Xin lưu ý rằng chúng tôi vẫn đang nghiên cứu các phương án để cải thiện hiệu suất trong những trường hợp này.
- Tên trường hiện phân biệt chữ hoa chữ thường, vì vậy việc khai báo trường “FOO” và lập chỉ mục trường là “foo” sẽ không hoạt động.
- FT.ADD lệnh sẽ được ánh xạ tới hset như hình ở đây:
FT.ADD idx doc1 1.0 LANGUAGE eng PAYLOAD payload FIELDS f1 v1 f2 v2
Được ánh xạ tới
HSET doc1 __score 1.0 __language eng __payload payload f1 v1 f2 v2
Điều này có nghĩa là các trường điểm, ngôn ngữ và trọng tải trên chỉ mục của bạn phải được gọi là __score, __language, __payload, do đó, để ánh xạ hoạt động như mong đợi.
- FT.ADDHASH không còn được hỗ trợ. Sử dụng HSET .
- FT.OPTIMIZE không còn được hỗ trợ, chức năng RediSearch Garbage Collection chịu trách nhiệm tối ưu hóa chỉ mục.
Kết luận
Chúng tôi thực sự vui mừng về những thay đổi này vì giờ đây bạn có thể tải RediSearch vào cơ sở dữ liệu Redis hiện có của mình và lập chỉ mục dữ liệu hiện có của bạn nằm trong hàm băm mà không cần phải cập nhật logic ứng dụng khi thao tác với các tài liệu này. Bạn có thể dùng thử bản phát hành quan trọng này bằng cách lấy mã nguồn từ GitHub hoặc bằng cách sử dụng 1:99:1 Hình ảnh RedisSarch Docker. Phiên bản này chưa sẵn sàng sản xuất, nhưng chúng tôi muốn chia sẻ với bạn ngay bây giờ để thu thập phản hồi của bạn. Vui lòng chia sẻ bất kỳ nhận xét hoặc vấn đề nào trên kho lưu trữ GitHub của chúng tôi hoặc trong diễn đàn Cộng đồng Redis.