2016-11-30 22 views
5

tôi có các phím sau trong redis:cụm từ phù hợp cho các phím trong redis

"542 136 mountain road" 
"542 136 mountainview road" 
"542136 mountain road" 
"542 136 mountain" 
"136 mountain road" 
"136 mountain" 

Tôi muốn để có được các phím chứa các cụm từ 136 mountain. Với mẫu kiểu glob, tôi hiện đang thực hiện 4 truy vấn để thỏa mãn tất cả các trường hợp có thể xảy ra.

scan 0 MATCH '*[\ ]136 mountain[\ ]*' 

scan 0 MATCH '*[\ ]136 mountain' 

scan 0 MATCH '136 mountain[\ ]*' 

scan 0 MATCH '136 mountain' 

Bốn truy vấn trong tổng số sẽ trở lại 4 kết quả:

"542 136 mountain road" 
"542 136 mountain" 
"136 mountain road" 
"136 mountain" 

Xin đừng chia sẻ đóng góp của bạn nếu có bất kỳ cách tốt hơn để thay đổi chuỗi mô hình để tất cả 4 kết quả có thể thu được trong một truy vấn.

Trả lời

0

Tôi không tin rằng điều này có thể đạt được với mẫu kiểu glob. Tôi cũng xin lưu ý rằng ngay cả khi có một mẫu phù hợp với các cụm từ được trình bày, do tính chất SCAN hoạt động như thế nào, bạn sẽ cần lặp lại toàn bộ tập dữ liệu (thực hiện các cuộc gọi riêng) để có được kết quả mà bạn đang tìm kiếm cho. Sau đó, bạn sẽ cần phải xem xét thực tế dữ liệu của bạn có thể thay đổi trong thời gian lặp lại.

Từ các tài liệu

Điều quan trọng cần lưu ý là các bộ lọc Đội hình thi đấu được áp dụng sau yếu tố này được lấy từ bộ sưu tập, chỉ cần trước khi trở về dữ liệu cho khách hàng. Điều này có nghĩa là nếu mẫu khớp với rất ít các phần tử bên trong bộ sưu tập, SCAN có thể sẽ không trả về các phần tử trong hầu hết các lần lặp lại.

tham khảo: https://redis.io/commands/scan#the-match-option

-

Lựa chọn 1

Sử dụng SCAN để lặp qua toàn bộ dữ liệu và tiếp tục lọc dữ liệu ở cấp ứng dụng.

Lựa chọn 2

Tùy thuộc vào loại bảo lãnh bạn đang tìm kiếm và bao nhiêu dữ liệu bạn có, bạn có thể sử dụng KEYS. Đây thường không phải là cách tiếp cận được khuyến nghị, nhưng đó là một tùy chọn để xem xét.

Ví dụ: KEYS '*136 mountain*'

Giống như SCAN cách tiếp cận , bạn sẽ có một phản ứng lớn hơn so với những gì bạn đang tìm kiếm và sẽ cần phải sử dụng ngôn ngữ của bạn lựa chọn để lọc thêm kết quả.

Lựa chọn 3

Index dữ liệu của bạn bằng cách thực hiện một số tiền xử lý ở mức độ ứng dụng.Nếu khóa khớp với mẫu mong muốn của bạn, hãy thêm nó vào SET/Bộ được sắp xếp.

Lựa chọn 4

Viết một kịch bản Lua.

Các vấn đề liên quan