Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách thực hiện phép giao (intersection) trên hai hoặc nhiều giá trị sorted set được lưu trữ trong kho dữ liệu redis, bằng cách sử dụng lệnh redis ZINTERSTORE.
Giao của các tập hợp:
Trong lý thuyết tập hợp, giao của hai hoặc nhiều tập hợp là tập hợp chứa các phần tử chung cho tất cả các tập hợp. Ví dụ:
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8, 9}
Giao của A & B :- A ∩ B = {4, 5}
Lệnh ZINTERSTORE :-
Lệnh này thực hiện phép giao của hai hoặc nhiều sorted set được chỉ định và trả về một giá trị sorted set mới được lưu trữ tại khóa đích được chỉ định. Sorted set không tồn tại được coi là sorted set rỗng. Lỗi được trả về, nếu khóa tồn tại nhưng giá trị lưu trữ tại khóa không phải là sorted set. Cú pháp của lệnh redis ZINTERSTORE như sau :-
Cú pháp :-
redis host:port> ZINTERSTORE <destination> numkeys <keyName> [<keyName>] [WEIGHTS weight [weight]] [AGGREGATE SUM|MIN|MAX]
Đầu ra :-
- (array) reply, chứa các phần tử kết quả từ phép giao. - Error, nếu khóa tồn tại và giá trị lưu trữ tại khóa không phải là sorted set.
numkeys là số lượng khóa đầu vào chứa giá trị sorted set mà phép giao được thực hiện trên chúng. Việc truyền đối số numkeys là bắt buộc trước khi truyền khóa đầu vào và các đối số khác. Kết quả được lưu trong một sorted set mới tại khóa destination. Nếu khóa đích đã tồn tại, nó sẽ bị ghi đè.
Tùy chọn WEIGHTS có thể được dùng để chỉ định hệ số nhân cho mỗi sorted set đầu vào. Điều này có nghĩa là điểm số (score) của mọi phần tử trong tất cả sorted set đầu vào được nhân với hệ số này trước khi được truyền cho hàm tổng hợp (aggregation function). Khi WEIGHTS không được truyền, hệ số nhân được lấy là 1.
Tùy chọn AGGREGATE có thể được dùng để chỉ định cách kết quả của phép giao được tổng hợp. Giá trị mặc định là SUM, có nghĩa là điểm số của một phần tử được cộng tổng qua tất cả sorted set đầu vào nơi nó tồn tại. Khi tùy chọn này được đặt thành MIN hoặc MAX, tập hợp kết quả sẽ chứa điểm số tối thiểu hoặc tối đa của một phần tử trên các sorted set đầu vào nơi nó tồn tại.
Ví dụ :-

Tham khảo :-
- ZINTERSTORE Command Docs
Đó là tất cả về cách thực hiện phép giao trên hai hoặc nhiều giá trị sorted set được lưu trữ trong kho dữ liệu redis. Nếu bạn thích, hãy chia sẻ suy nghĩ trong phần bình luận và chia sẻ với người khác.
