ในบทเรียนนี้ เราจะเรียนรู้วิธีการดำเนินการรวม (Union) บน Sorted Set 2 ชุดขึ้นไปที่จัดเก็บใน Redis Datastore โดยใช้คำสั่ง Redis ZUNIONSTORE
การรวมของ Set (Union of Sets):
ในทฤษฎีเซต การรวมของเซต 2 ชุดขึ้นไป คือเซตที่ประกอบด้วยสมาชิกทั้งหมด (ที่ไม่ซ้ำกัน) ที่มีอยู่ในทุกเซต ตัวอย่าง :
A = {1, 2, 3, 4, 5} B = {4, 5, 6, 7, 8, 9} การรวมของ A & B :- A U B = {1, 2, 3, 4, 5, 6, 7, 8, 9}
คำสั่ง ZUNIONSTORE :-
คำสั่งนี้ดำเนินการรวมของ Sorted Set 2 ชุดขึ้นไปที่ระบุ และส่งคืนค่า Sorted Set ใหม่ที่จัดเก็บที่ Key ที่ระบุ Sorted Set ที่ไม่มีอยู่ถูกมองว่าเป็น Empty Sorted Set จะส่งคืน Error หาก Key มีอยู่แต่ค่าที่จัดเก็บที่ Key ไม่ใช่ Sorted Set ไวยากรณ์ของคำสั่ง Redis ZUNIONSTORE มีดังนี้ :-
ไวยากรณ์ (Syntax) :-
redis host:port> ZUNIONSTORE <destination> numkeys <keyName> [<keyName>] [WEIGHTS weight [weight]] [AGGREGATE SUM|MIN|MAX]
ผลลัพธ์ (Output) :-
- (array) reply, มีสมาชิกผลลัพธ์จากการรวม - Error, หาก Key มีอยู่และค่าที่จัดเก็บที่ Key ไม่ใช่ Sorted Set
numkeys คือจำนวน Input Key ที่มีค่า Sorted Set ที่จะดำเนินการรวม ต้องส่ง numkeys ก่อนส่ง Input Key และอาร์กิวเมนต์อื่นๆ ผลลัพธ์จะถูกจัดเก็บใน Sorted Set ใหม่ที่ destination Key หาก Destination Key มีอยู่แล้ว จะถูก Overwrite
WEIGHTS ตัวเลือกนี้ใช้ระบุตัวคูณ (Multiplication Factor) สำหรับ Input Sorted Set แต่ละชุด หมายความว่า Score ของทุกสมาชิกใน Input Sorted Set ทั้งหมดจะถูกคูณด้วยตัวคูณนี้ ก่อนส่งเข้าฟังก์ชัน Aggregation หากไม่ส่ง WEIGHTS ตัวคูณจะถูกนับเป็น 1
AGGREGATE ตัวเลือกนี้ใช้ระบุวิธีการรวมผลลัพธ์ของการรวม ค่าเริ่มต้นคือ SUM หมายถึง Score ของสมาชิกจะถูกรวมกันจาก Input Sorted Set ทุกชุดที่มีอยู่ เมื่อตั้งค่าเป็น MIN หรือ MAX Set ที่ได้จะมี Score ต่ำสุดหรือสูงสุดของสมาชิกข้าม Input Sorted Set ที่มีอยู่
ตัวอย่าง (Example) :-

อ้างอิง (References) :-
- ZUNIONSTORE Command Docs
ขอจบบทเรียนเรื่องวิธีดำเนินการรวมบน Sorted Set 2 ชุดขึ้นไปที่จัดเก็บใน Redis Datastore หากชอบ กรุณาแชร์ความคิดเห็นในส่วนความคิดเห็นและแชร์ให้คนอื่นๆ ด้วยนะครับ
