คำอธิบาย Redis Strings
สตริงเป็นโครงสร้างข้อมูลพื้นฐานและพื้นฐานที่สุดที่ฐานข้อมูล Redis นำเสนอ สตริง Redis เป็นลำดับไบต์ที่ปลอดภัยแบบไบนารี คล้ายกับสตริงปกติในภาษาการเขียนโปรแกรมเช่น Java และ c#.net สิ่งสำคัญที่สุดคือ สตริง Redis สามารถใช้เก็บเกือบทุกอย่างที่คุณชอบ เช่น สตริง จำนวนเต็ม JSON แบบอนุกรม XML และค่าไบนารี เนื่องจากชนิดข้อมูลสตริงของ Redis มีความปลอดภัยแบบไบนารี ออบเจ็กต์ไบนารี เช่น รูปภาพ วิดีโอ และเอกสารจึงสามารถจัดเก็บได้อย่างง่ายดายโดยใช้สตริง นอกจากนี้ สตริง Redis หนึ่งสตริงสามารถเก็บข้อมูลได้สูงสุด 512MB
นอกจากนี้ โครงสร้างข้อมูลสตริง Redis มักใช้ในกรณีการใช้งานต่อไปนี้:
- เก็บเอาไว้
- การจัดเก็บเซสชัน
- การตอบสนอง API
- หน้า HTML
- เคาน์เตอร์
- การใช้บิตแมปและการดำเนินการระดับบิต
การดำเนินการสตริงที่ใช้เป็นส่วนใหญ่ ได้แก่ SET, GET, MGET และ SETNX คำสั่ง INCRBY และ INCRBYFLOAT มักใช้เพื่อจัดการตัวนับที่ใช้งานโดยใช้โครงสร้างข้อมูลสตริง Redis ในบทช่วยสอนนี้ คำสั่ง MGET มีรายละเอียด
คำสั่ง MGET เปิดเผย
คำสั่ง MGET ใช้เพื่อดึงค่าของคีย์ Redis ที่กำหนด ยอมรับอย่างน้อยหนึ่งคีย์เป็นอาร์กิวเมนต์ นอกจากนี้ คำสั่ง MGET ทำงานบนความซับซ้อนของเวลา O(N) โดยที่ N คือจำนวนคีย์ที่ระบุ ไวยากรณ์ของคำสั่ง MGET มีดังนี้:
คีย์ MGET [ กุญแจ ... ]
เมื่อดำเนินการคำสั่ง MGET จะส่งคืนอาร์เรย์ของค่าที่เก็บไว้ที่คีย์ Redis ที่ระบุ หากไม่มีคีย์ มันจะคืนค่าพิเศษ ไม่มี ในทำนองเดียวกัน หากคีย์ไม่มีค่าสตริง a ไม่มี ค่าจะถูกส่งกลับ
กรณีการใช้งาน: ดึงการตอบกลับ API ที่แคชไว้ทั้งหมด
สมมติสถานการณ์ที่ใช้ชนิดข้อมูลสตริง Redis เพื่อใช้แคชที่มีการตอบสนอง API ล่าสุด เราใช้คำสั่ง SET เพื่อจัดเก็บการตอบสนองของ dummy API เพื่อวัตถุประสงค์ในการสาธิต
ชุด dummyhost / ลูกค้า 'ริคกี้ เบอร์นาร์ด แมรี่ ซามูเอล โจ' ชุด dummyhost / ซัพพลายเออร์ 'จิมมี่ เจเรมี แอนดรูว์ เฮร่า' ชุด dummyhost / ใบแจ้งหนี้ '{'invoices': [{'invoice_id': 1, 'invoice_payment': 1000}, {'invoice_id': 2, 'invoice_payment': 3400}]}'
เราเก็บค่าสตริงสองสามค่าและอ็อบเจ็กต์ JSON แบบอนุกรมโดยใช้ชนิดข้อมูลสตริง Redis
ตอนนี้ ลองใช้คำสั่ง MGET เพื่อดึงการตอบสนองทั้งหมดในการเรียก API แต่ละครั้งพร้อมกัน
mget ดัมมี่โฮสต์ / ลูกค้า dummyhost / ซัพพลายเออร์ dummyhost / ใบแจ้งหนี้
เอาท์พุท:
1 ) 'ริคกี้ เบอร์นาร์ด แมรี่ ซามูเอล โจ'สอง ) 'จิมมี่ เจเรมี แอนดรูว์ เฮร่า'
3 ) '{' ใบแจ้งหนี้ ': [{' invoice_id ': 1, ' invoice_payment ':1000}, {' invoice_id ': สอง, ' invoice_payment ':3400}]}'
ตามที่คาดไว้ ค่าในแต่ละคีย์จะถูกส่งกลับเป็นอาร์เรย์
การระบุคีย์ที่ไม่มีอยู่
ดังที่กล่าวไว้ คำสั่ง MGET จะคืนค่าพิเศษ ไม่มี เมื่อมีการให้คีย์ที่ไม่มีอยู่ มาระบุคีย์ที่ไม่มีอยู่ซึ่งเรียกว่า 'nonexistingkey' ให้กับคำสั่ง MGET และดำเนินการตามตัวอย่างก่อนหน้านี้ดังนี้:
mget ดัมมี่โฮสต์ / ลูกค้า dummyhost / ซัพพลายเออร์ dummyhost / ใบแจ้งหนี้ไม่มีคีย์
อย่างที่คุณเห็น ค่าสุดท้ายในอาร์เรย์คือ ไม่มี ซึ่งเชื่อมโยงกับคีย์ Redis ที่ไม่มีอยู่
โดยรวมแล้ว คำสั่ง MGET เป็นตัวเลือกที่เหมาะสมที่สุดเมื่อเราต้องการดึงค่าสตริงที่เก็บไว้ที่หลายคีย์ในการโทรครั้งเดียว แทนที่จะเรียกใช้คำสั่ง GET หลายครั้ง
บทสรุป
โดยสรุป คำสั่ง MGET ทำงานบนโครงสร้างข้อมูลสตริง Redis เพื่อคืนค่าที่จัดเก็บไว้ที่หลายคีย์ในการโทรครั้งเดียว ยอมรับคีย์ Redis อย่างน้อยหนึ่งคีย์เป็นอาร์กิวเมนต์ ตามที่เน้นไว้ คำสั่ง MGET ทำงานในความซับซ้อนของเวลา O(N) กรณีการใช้งานแสดงให้คุณเห็นถึงวิธีใช้คำสั่ง MGET เพื่อดึงการตอบสนอง API หลายรายการที่เก็บอยู่ในหลายคีย์อย่างมีประสิทธิภาพ