คืน DECR

Khun Decr



การจัดการจำนวนเต็ม 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.

รับสุขภาพ:playerID: 1



สมมุติว่าผู้เล่นที่มี ID 1 โดนโจมตีและพลังชีวิตควรลดลงหนึ่งตัว คำสั่ง DECR สามารถใช้ได้ดังนี้:

สุขภาพ Decr:playerID: 1


ตามที่คาดไว้ คำสั่ง DECR จะพิมพ์ค่าที่อัพเดตหลังจากการดำเนินการลดดังแสดงในรูปต่อไปนี้:


นอกจากนี้เรายังสามารถตรวจสอบค่าที่เก็บไว้ที่คีย์ health:playerID:1 ด้วยคำสั่ง GET

รับสุขภาพ:playerID: 1



ตามที่คาดไว้ มูลค่าลดลงหนึ่ง

ตัวดำเนินการ DECR ใช้ได้กับตัวเลขติดลบเช่นกัน มาเก็บค่าตัวเลขติดลบใหม่ที่คีย์ ค่าลบ:value1 .

ชุด ค่าลบ:value1 -3


เราสามารถตรวจสอบค่าโดยใช้คำสั่ง GET ได้ดังนี้

รับค่าลบ:value1



คำสั่งต่อไปนี้แสดงวิธีการใช้คำสั่ง DECR บนคีย์ ค่าลบ:value1:

Decr ลบ:value1


คำสั่ง DECR เกี่ยวกับค่าที่ไม่ใช่จำนวนเต็ม

มีบางกรณีที่ขอบบางกรณีเมื่อเราพยายามใช้คำสั่ง DECR บนคีย์ Redis ที่มีประเภทข้อมูลที่ไม่ใช่สตริงหรือสตริงที่ไม่สามารถแสดงเป็นจำนวนเต็มได้ คำสั่ง DECR แสดงข้อผิดพลาดในกรณีเหล่านั้นดังแสดงในตัวอย่างต่อไปนี้:

ชุด notAnIntergerVal สวัสดี


“สวัสดี” เป็นข้อความที่ไม่สามารถแปลงเป็นจำนวนเต็มที่ลงนามได้ ดังนั้นคำสั่ง DECR จะทำให้เกิดข้อผิดพลาดหากเราเรียกใช้โดยเทียบกับคีย์นี้

Decr notAnIntergerVal


คำสั่ง DECR เกี่ยวกับคีย์ที่ไม่มีอยู่

ในบางกรณี คุณอาจเรียกใช้คำสั่ง DECR บนคีย์ที่ไม่มีอยู่ในที่เก็บข้อมูล Redis ดังนั้น คำสั่งจะสร้างคีย์ที่ระบุและตั้งค่าเป็นจำนวนเต็ม 0 ในขณะเดียวกัน ค่าก็ลดลงหนึ่งค่า

Decr ไม่มีคีย์


ตามที่คาดไว้ ผลลัพธ์คือ -1


โดยรวมแล้ว คำสั่ง DECR มีประโยชน์มากในการปรับใช้ตัวนับในแอปพลิเคชันที่มีเวลาแฝงต่ำ

บทสรุป

โดยสรุป DECR เป็นหนึ่งในคำสั่งที่ทำงานบนค่าตัวเลขที่เก็บไว้ที่คีย์ Redis ที่กำหนด Redis ไม่สนับสนุนประเภทข้อมูลจำนวนเต็มแยกต่างหาก ดังนั้นประเภทสตริงจึงใช้เพื่อเก็บค่าตัวเลขเช่นกัน ตามที่ตรวจสอบ ถ้าค่าสตริงสามารถแสดงเป็นจำนวนเต็มที่ลงนาม 64 บิต คำสั่ง DECR สามารถใช้เพื่อลดค่าของมันได้ สิ่งสำคัญที่สุดคือ มันทำงานบนความซับซ้อนของเวลาอย่างต่อเนื่อง นอกจากนี้ คำสั่ง DECR ยังใช้กันอย่างแพร่หลายในการติดตั้งตัวนับ