การจัดการจำนวนเต็ม Redis
ประเภทสตริงเป็นประเภทข้อมูลพื้นฐานที่สุดที่ Redis นำเสนอ สตริง Redis สามารถจัดเก็บข้อความ ออบเจ็กต์ JSON แบบอนุกรม รูปภาพ เสียง และแม้แต่ค่าตัวเลข ในคู่มือนี้ เราจะเน้นที่ค่าตัวเลขและการจัดการจำนวนเต็ม Redis ไม่สนับสนุนชนิดข้อมูลจำนวนเต็มแยกกันเพื่อเก็บข้อมูลที่เป็นตัวเลข หากคีย์ Redis มีสตริงที่สามารถแสดงเป็นจำนวนเต็มได้ Redis สามารถตีความค่าตัวเลขเป็นเลขฐาน 10 64 บิตที่มีลายเซ็น
การจัดการตัวเลขเป็นคุณลักษณะที่มีประโยชน์อย่างยิ่งที่จะมีในฐานข้อมูลใดๆ Redis มีการดำเนินการที่มีประโยชน์หลายอย่างในการทำงานกับประเภทจำนวนเต็ม เช่น INCR, DECR, INCRBY เป็นต้น ในคู่มือนี้ คำสั่ง DECR ซึ่งทำงานบนประเภทจำนวนเต็มจะอธิบายโดยละเอียด
คำสั่ง DECR
คำสั่ง DECR ถูกนำมาใช้เพื่อลดค่าตัวเลขที่เก็บไว้ที่คีย์ที่กำหนดทีละหนึ่ง ใช้ได้เฉพาะกับค่าสตริงที่สามารถแสดงเป็นจำนวนเต็ม 64 บิตฐาน 10 คำสั่ง DECR แสดงข้อผิดพลาดสำหรับค่าที่ไม่ใช่สตริงหรือค่าสตริงที่ไม่สามารถแสดงเป็นจำนวนเต็มได้
ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง DECR:
คีย์ DECR
สำคัญ: คีย์ที่เก็บค่าสตริง
คำสั่ง DECR จะคืนค่าจำนวนเต็มที่ลงนามที่เป็นผลลัพธ์หลังการดำเนินการลดค่า หากไม่มีคีย์ที่ระบุ คำสั่งจะตั้งค่าเป็น 0 แล้วลดค่าลงหนึ่งค่า นอกจากนี้ ข้อผิดพลาดจะเกิดขึ้นเมื่อค่าไม่ใช่สตริงหรือไม่สามารถแสดงเป็นจำนวนเต็มที่ลงนามแบบ 64 บิตได้ คำสั่งนี้ทำงานบนความซับซ้อนของเวลาคงที่ (O(1)) ซึ่งเร็วมาก
กรณีใช้งาน – ลดสุขภาพผู้เล่นในเกมออนไลน์
สมมติเกมออนไลน์ที่สุขภาพของผู้เล่นแต่ละคนเพิ่มขึ้นทีละหนึ่งเมื่อมีการเปิดเผยชุดสื่อ ในทำนองเดียวกัน พลังชีวิตจะลดลงหนึ่งครั้งหากผู้เล่นล้มหรือถูกผู้เล่นคนอื่นโจมตี
ตัวเลือกที่เหมาะสมที่สุดในการจัดเก็บสุขภาพของผู้เล่นคือประเภทสตริง Redis ซึ่งเราสามารถจัดเก็บสุขภาพเป็นจำนวนเต็มได้ มาสร้างคีย์กันเถอะ health:playerID:1 และตั้งค่าเป็น 10 เราสามารถใช้คำสั่ง SET ได้ดังนี้
ชุด สุขภาพ:ผู้เล่น ID: 1 10
เราสามารถใช้คำสั่ง GET เพื่อตรวจสอบค่าที่เก็บไว้ที่ สุขภาพ:playerID:1.
สมมุติว่าผู้เล่นที่มี ID 1 โดนโจมตีและพลังชีวิตควรลดลงหนึ่งตัว คำสั่ง DECR สามารถใช้ได้ดังนี้:
ตามที่คาดไว้ คำสั่ง DECR จะพิมพ์ค่าที่อัพเดตหลังจากการดำเนินการลดดังแสดงในรูปต่อไปนี้:
นอกจากนี้เรายังสามารถตรวจสอบค่าที่เก็บไว้ที่คีย์ health:playerID:1 ด้วยคำสั่ง GET
ตามที่คาดไว้ มูลค่าลดลงหนึ่ง
ตัวดำเนินการ DECR ใช้ได้กับตัวเลขติดลบเช่นกัน มาเก็บค่าตัวเลขติดลบใหม่ที่คีย์ ค่าลบ:value1 .
ชุด ค่าลบ:value1 -3
เราสามารถตรวจสอบค่าโดยใช้คำสั่ง GET ได้ดังนี้
คำสั่งต่อไปนี้แสดงวิธีการใช้คำสั่ง DECR บนคีย์ ค่าลบ:value1:
คำสั่ง DECR เกี่ยวกับค่าที่ไม่ใช่จำนวนเต็ม
มีบางกรณีที่ขอบบางกรณีเมื่อเราพยายามใช้คำสั่ง DECR บนคีย์ Redis ที่มีประเภทข้อมูลที่ไม่ใช่สตริงหรือสตริงที่ไม่สามารถแสดงเป็นจำนวนเต็มได้ คำสั่ง DECR แสดงข้อผิดพลาดในกรณีเหล่านั้นดังแสดงในตัวอย่างต่อไปนี้:
ชุด notAnIntergerVal สวัสดี
“สวัสดี” เป็นข้อความที่ไม่สามารถแปลงเป็นจำนวนเต็มที่ลงนามได้ ดังนั้นคำสั่ง DECR จะทำให้เกิดข้อผิดพลาดหากเราเรียกใช้โดยเทียบกับคีย์นี้
คำสั่ง DECR เกี่ยวกับคีย์ที่ไม่มีอยู่
ในบางกรณี คุณอาจเรียกใช้คำสั่ง DECR บนคีย์ที่ไม่มีอยู่ในที่เก็บข้อมูล Redis ดังนั้น คำสั่งจะสร้างคีย์ที่ระบุและตั้งค่าเป็นจำนวนเต็ม 0 ในขณะเดียวกัน ค่าก็ลดลงหนึ่งค่า
Decr ไม่มีคีย์
ตามที่คาดไว้ ผลลัพธ์คือ -1
โดยรวมแล้ว คำสั่ง DECR มีประโยชน์มากในการปรับใช้ตัวนับในแอปพลิเคชันที่มีเวลาแฝงต่ำ
บทสรุป
โดยสรุป DECR เป็นหนึ่งในคำสั่งที่ทำงานบนค่าตัวเลขที่เก็บไว้ที่คีย์ Redis ที่กำหนด Redis ไม่สนับสนุนประเภทข้อมูลจำนวนเต็มแยกต่างหาก ดังนั้นประเภทสตริงจึงใช้เพื่อเก็บค่าตัวเลขเช่นกัน ตามที่ตรวจสอบ ถ้าค่าสตริงสามารถแสดงเป็นจำนวนเต็มที่ลงนาม 64 บิต คำสั่ง DECR สามารถใช้เพื่อลดค่าของมันได้ สิ่งสำคัญที่สุดคือ มันทำงานบนความซับซ้อนของเวลาอย่างต่อเนื่อง นอกจากนี้ คำสั่ง DECR ยังใช้กันอย่างแพร่หลายในการติดตั้งตัวนับ