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

เชี่ยวชาญ Redis RPOP และ BRPOP: Pop สมาชิกสุดท้ายของ List อย่างมีประสิทธิภาพ

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

คำสั่ง RPOP

คำสั่งนี้ใช้ลบและส่งคืนสมาชิกสุดท้ายของค่า List ที่จัดเก็บที่ Key ที่ระบุ จะส่งคืน Nil หาก Key ไม่มีอยู่ และส่งคืน Error หาก Key มีอยู่แต่ค่าที่จัดเก็บที่ Key ไม่ใช่ชนิดข้อมูล List ไวยากรณ์ของคำสั่ง Redis RPOP มีดังนี้:-

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

redis host:port> RPOP <keyname>

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

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

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

เชี่ยวชาญ Redis RPOP และ BRPOP: Pop สมาชิกสุดท้ายของ List อย่างมีประสิทธิภาพ

คำสั่ง BRPOP

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

มันลบและส่งคืนสมาชิกสุดท้ายของ List ที่ไม่ว่างเปล่า โดยตรวจสอบ Key ที่ระบุจากซ้ายไปขวา ดังนั้น เช่น หากคำสั่ง BRPOP list1 list2 list3 0 ถูก Execute โดยที่ Key list1 ไม่มีอยู่ (ถือว่าเป็น Empty List) list2 เป็น Empty List และ list3 มี 3 สมาชิก มันจะลบและส่งคืนสมาชิกสุดท้ายของค่า List ที่จัดเก็บที่ list3 เนื่องจากมันเป็น List แรกที่ไม่ว่าง เมื่อตรวจสอบจาก list1 ถึง list3

หาก Key ที่ระบุใดๆ ไม่มีอยู่ หรือค่า List ของ Key นั้นว่างเปล่า BRPOP จะ Block การทำงานจนกว่า Client อื่นจะ Execute คำสั่งอย่าง LPUSH, RPUSH, และ LINSERT เพื่อแทรกสมาชิกใน Key ที่ระบุอย่างน้อย 1 ตัว เมื่อมีสมาชิกใหม่อยู่บน List Value ใดๆ Client จะส่งคืนพร้อมชื่อ Key ที่ Unblock และค่าที่ Pop ออก

เมื่อ BRPOP ทำให้ Client Block และระบุ Timeout ที่ไม่เป็นศูนย์ Client จะ Unblock ส่งคืน Nil เมื่อ Timeout ที่ระบุหมดอายุโดยไม่มีการแทรกสมาชิกติด Key ที่ระบุอย่างน้อย 1 ตัว

อาร์กิวเมนต์ Timeout เป็นค่า Integer แสดงจำนวนวินาทีสูงสุดที่จะ Block Timeout 0 วินาทีสามารถใช้เพื่อ Block เป็นเวลาอันสิ้นสุดไม่ได้

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

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

redis host:port> BRPOP <keyname-1> [ <keyname> ] <timeout>

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

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

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

เชี่ยวชาญ Redis RPOP และ BRPOP: Pop สมาชิกสุดท้ายของ List อย่างมีประสิทธิภาพ

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

  1. RPOP Command Docs
  2. BRPOP Command Docs

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

<- List Commands