ในบทช่วยสอนนี้ เราจะเรียนรู้เกี่ยวกับวิธีลบและส่งคืนองค์ประกอบสุดท้ายของค่ารายการที่เก็บอยู่ที่คีย์เดียว และแทรกองค์ประกอบเดียวกันที่ตำแหน่งแรกของค่ารายการที่จัดเก็บไว้ในคีย์อื่นในคลังข้อมูล redis สำหรับสิ่งนี้ เราจะใช้ Redis RPOPLPUSH และ BRPOPLPUSH คำสั่ง
คำสั่ง RPOPLPUSH
คำสั่งนี้ใช้เพื่อลบและส่งคืนองค์ประกอบจากส่วนท้าย ( end ) ของค่ารายการที่เก็บไว้ที่ซอร์สคีย์ และแทรกองค์ประกอบเดียวกันที่ส่วนหัว ( start ) ของค่ารายการที่เก็บอยู่ที่คีย์ปลายทาง หากไม่มีซอร์สคีย์ ค่าศูนย์จะถูกส่งกลับและไม่มีการดำเนินการใดๆ หากไม่มีคีย์ปลายทาง ระบบจะสร้างคีย์ดังกล่าวเป็นรายการว่างก่อนดำเนินการแทรก
หากคีย์ต้นทางและปลายทางเหมือนกัน การดำเนินการนี้จะเหมือนกับการหมุนองค์ประกอบรายการ ไวยากรณ์ของคำสั่ง redis RPOPLPUSH มีดังนี้:-
ไวยากรณ์ :-
redis host:post> RPOPLPUSH <keyname-source> <keyname-destination>
ผลลัพธ์ :-
- (string) reply, representing popped element of the source list. - (nil), if source key does not exists. - Error, if source or destination key exist and value stored at the key is not a list.
ตัวอย่าง :-
คำสั่ง BRPOPLPUSH
คำสั่งนี้เป็นคำสั่ง RPOPLPUSH เวอร์ชันบล็อก เนื่องจากจะบล็อกการดำเนินการเมื่อไม่มีองค์ประกอบที่จะแสดงจากค่ารายการต้นทาง กล่าวคือจะบล็อกการดำเนินการเมื่อค่ารายการที่คีย์ต้นทางว่างเปล่าหรือไม่มีคีย์ต้นทาง
เมื่อไคลเอนต์อื่นรันคำสั่งเช่น LPUSH, RPUSH และ LINSERT เพื่อแทรกองค์ประกอบในค่ารายการต้นทาง ไคลเอนต์จะได้รับการปลดบล็อกเพื่อดำเนินการ RPOPLPUSH
เมื่อมีการระบุระยะหมดเวลาที่ไม่ใช่ศูนย์และการหมดเวลาหมดอายุโดยไม่ต้องดำเนินการแทรกกับซอร์สคีย์ ไคลเอ็นต์จะได้รับการเลิกบล็อกโดยส่งคืนค่า null
อาร์กิวเมนต์การหมดเวลาคือค่าจำนวนเต็มที่แสดงจำนวนวินาทีสูงสุดที่จะบล็อก สามารถใช้ระยะหมดเวลา 0 วินาทีเพื่อบล็อกได้ไม่มีกำหนด
ไวยากรณ์ของคำสั่ง Redis BRPOPLPUSH มีดังนี้:-
ไวยากรณ์ :-
redis host:post> BRPOPLPUSH <keyname-source> <keyname-destination> <timeout>
ผลลัพธ์ :-
- (string) reply, representing popped element of the source list. - (nil) reply, when no element could be popped and timeout is expired.
ตัวอย่าง :-
ข้อมูลอ้างอิง :-
- เอกสารคำสั่ง RPOPLPUSH
- เอกสารคำสั่ง BRPOPLPUSH
หากคุณชอบโปรดแบ่งปันความคิดของคุณในส่วนความคิดเห็นและแบ่งปันกับผู้อื่นด้วย