Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Redis

วิธีลบและดึงสมาชิกที่มี Score ต่ำสุดใน Redis Sorted Set ด้วย ZPOPMIN และ BZPOPMIN

ในบทเรียนนี้ เราจะเรียนรู้วิธีการลบและส่งคืนสมาชิกที่มี Score ต่ำสุดของค่า Sorted Set ที่จัดเก็บที่ Key ใน Redis Datastore โดยใช้คำสั่ง Redis ZPOPMIN และ BZPOPMIN

คำสั่ง ZPOPMIN

คำสั่งนี้ลบและส่งคืนสมาชิกที่มี Score ต่ำสุด 1 หรือหลายรายการ จากค่า Sorted Set ที่จัดเก็บที่ Key ที่ระบุ คำสั่งรับอาร์กิวเมนต์ count ซึ่งแสดงจำนวนสมาชิกทั้งหมดที่จะถูกลบจากค่า Sorted Set หากไม่ระบุ ค่าเริ่มต้นของ count คือ 1 เมื่อส่งคืนสมาชิก สมาชิกที่มี Score ต่ำสุดจะอยู่ลำดับแรก ตามด้วยสมาชิกที่มี Score สูงกว่า

จะส่งคืน Error หาก Key มีอยู่แต่ค่าที่จัดเก็บที่ Key ไม่ใช่ชนิดข้อมูล Sorted Set และส่งคืน Nil หาก Key ไม่มีอยู่

ไวยากรณ์ของคำสั่ง Redis ZPOPMIN มีดังนี้ :-

ไวยากรณ์ (Syntax) :-

redis host:port> ZPOPMIN <keyname> <count>

ผลลัพธ์ (Output) :-

- (array) reply, แสดงสมาชิกและ Score ของ Sorted Set - (nil), หาก Key ไม่มีอยู่ - Error, หาก Key มีอยู่และค่าที่จัดเก็บที่ Key ไม่ใช่ Sorted Set 

ตัวอย่าง (Example) :-

วิธีลบและดึงสมาชิกที่มี Score ต่ำสุดใน Redis Sorted Set ด้วย ZPOPMIN และ BZPOPMIN

คำสั่ง BZPOPMIN

คำสั่งนี้เป็น Blocking version ของคำสั่ง ZPOPMIN เนื่องจากมันจะ Block การทำงานเมื่อไม่มีสมาชิกให้ Pop จาก Sorted Set ใดๆ ที่ระบุ กล่าวคือ มัน Block เมื่อ Sorted Set ที่ระบุทั้งหมดว่างเปล่าหรือ Key ที่ระบุทั้งหมดไม่มีอยู่

มันลบและส่งคืนสมาชิกที่มี Score ต่ำสุดจาก Sorted Set ที่ไม่ว่างเปล่าแรก โดยตรวจสอบ Key ที่ระบุจากซ้ายไปขวา ดังนั้น เช่น หากคำสั่ง BZPOPMIN set1 set2 set3 0 ถูก Execute โดยที่ Key set1 ไม่มีอยู่ (ถือว่าเป็น Empty Set) set2 เป็น Empty Set และ set3 มี 3 สมาชิก มันจะลบและส่งคืนสมาชิกที่มี Score ต่ำสุดของค่า Sorted Set ที่จัดเก็บที่ set3 เนื่องจากมันเป็น Set แรกที่ไม่ว่าง เมื่อตรวจสอบจาก set1 ถึง set3

คำสั่งนี้รับอาร์กิวเมนต์ timeout (integer) ซึ่งแสดงจำนวนวินาทีสูงสุดที่จะ Block Timeout เป็นศูนย์สามารถใช้เพื่อ Block เป็นเวลาอันสิ้นสุดไม่ได้

ไวยากรณ์ของคำสั่ง Redis BZPOPMIN มีดังนี้ :-

ไวยากรณ์ (Syntax) :-

redis host:port> BZPOPMIN <keyname> [ <keyname> ] <timeout>

ผลลัพธ์ (Output) :-

- (array) reply, ส่งคืน 3 องค์ประกอบ โดยองค์ประกอบแรกคือชื่อ Key ของ Sorted Set องค์ประกอบที่สองคือ Score ของสมาชิกที่ Pop ออก และองค์ประกอบที่สามคือสมาชิกที่ Pop ออกเอง - (nil), เมื่อไม่มีสมาชิกให้ Pop และ Timeout หมดอายุ

ตัวอย่าง (Example) :-

วิธีลบและดึงสมาชิกที่มี Score ต่ำสุดใน Redis Sorted Set ด้วย ZPOPMIN และ BZPOPMIN

อ้างอิง (References) :-

  1. ZPOPMIN Command Docs
  2. BZPOPMIN Command Docs

ขอจบบทเรียนเรื่องวิธีลบและส่งคืนสมาชิกที่มี Score ต่ำสุดของค่า Sorted Set ที่จัดเก็บใน Redis Datastore หากชอบ กรุณาแชร์ความคิดเห็นในส่วนความคิดเห็นและแชร์ให้คนอื่นๆ ด้วยนะครับ