แฮชคีย์ Redis EXPIRE

Hae Ch Khiy Redis Expire



แฮช Redis เป็นชนิดข้อมูลพิเศษที่คล้ายกับอ็อบเจ็กต์ JSON, Java HashMap หรือพจนานุกรม Python นอกจากนี้ยังเป็นคอลเล็กชันของคู่ค่าฟิลด์ที่สามารถใช้เพื่อสร้างแบบจำลองออบเจ็กต์โดเมน โครงสร้างข้อมูลแฮช Redis เป็นหน่วยความจำที่มีประสิทธิภาพสูงสุด โดยที่คีย์แฮชแต่ละตัวสามารถจัดเก็บคู่ค่าฟิลด์ได้ถึงสี่พันล้านคู่ ที่สำคัญที่สุด การดำเนินการแฮชพื้นฐาน เช่น HSET, HGET, HMGET เป็นต้น ทำงานบนความซับซ้อนของเวลาอย่างต่อเนื่อง


แฮชคีย์ Redis มีเวลาไม่สิ้นสุดในการใช้ชีวิต (TTL) ซึ่งหมายความว่าจะคงอยู่ตลอดไป ซึ่งจะถูกลบออกอย่างชัดเจนโดยใช้คำสั่งเช่น DEL ในบทความนี้ เราจะเน้นที่การตั้งค่า TTL สำหรับแฮช Redis โดยใช้คำสั่ง EXPIRE







คำสั่ง Redis EXPIRE

คำสั่ง EXPIRE ใช้เพื่อตั้งค่าไทม์เอาต์บนคีย์ที่กำหนดของแฮช Redis ตั้งค่า รายการ ฯลฯ คีย์ Redis จะถูกลบออกจากฐานข้อมูลหากหมดเวลา สิ่งสำคัญที่สุดคือ การหมดเวลาจะไม่ชัดเจนจนกว่าเนื้อหาของคีย์จะถูกลบหรือเขียนทับ การเปลี่ยนแปลงค่าที่เกี่ยวข้องกับคีย์จะไม่ส่งผลต่อเวลาหมดอายุ



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



คีย์ EXPIRE expiry_time_seconds [ NX | GX | GT | LT ]


กุญแจ: คีย์ของ Hash, List หรือ Set ที่คุณต้องการตั้งค่าระยะหมดเวลา





expirty_time_seconds: ค่าการหมดเวลาเป็นวินาที

คำสั่ง EXPIRE ยอมรับอาร์กิวเมนต์ที่เป็นทางเลือกหลายข้อ



NX: ค่าการหมดเวลาจะถูกตั้งค่าเฉพาะเมื่อคีย์ที่ระบุไม่มีวันหมดอายุ

XX: เมื่อคีย์ที่ระบุมีค่าหมดเวลาที่มีอยู่ การหมดอายุใหม่จะถูกตั้งค่า

จีที: หากค่าระยะหมดเวลาใหม่มากกว่าค่าที่มีอยู่ การหมดอายุใหม่จะถูกตั้งค่า

LT: ค่าระยะหมดเวลาใหม่จะถูกตั้งค่าหากค่าที่มีอยู่มากกว่าค่าใหม่

ที่สำคัญที่สุด คำสั่ง EXPIRE ทำงานบนความซับซ้อนของเวลาคงที่ จำนวนเต็ม 1 จะถูกส่งกลับหากการดำเนินการคำสั่งสำเร็จ หากการดำเนินการล้มเหลวเนื่องจากอาร์กิวเมนต์ไม่ถูกต้องหรือคีย์ที่ไม่มีอยู่ ระบบจะส่งคืน 0

เราจะใช้คำสั่ง EXPIRE บนแฮชเพื่อตั้งเวลาหมดอายุดังที่แสดงในส่วนต่อไปนี้:

หมดอายุ Redis Hash โดยใช้คำสั่ง EXPIRE

สมมติว่าข้อมูลเซสชันต่อผู้ใช้ถูกเก็บไว้ใน Redis hash เซสชัน:id:1000:ผู้ใช้:10. เราสามารถใช้คำสั่ง HMSET เพื่อสร้างแฮช Redis ที่มีคู่ค่าฟิลด์หลายคู่ดังนี้:

เซสชัน hmset:id: 1000 :ผู้ใช้: 10 ชื่อผู้ใช้ 'เจ๊' คุกกี้ 'ใช่' รหัสผ่าน '389Ysu2'


มาตรวจสอบแฮชที่สร้างขึ้นโดยใช้คำสั่ง HGETALL

เซสชัน hgetall:id: 1000 :ผู้ใช้: 10



นอกจากนี้ เซสชันจะหมดอายุหลังจาก 10 วินาทีหากผู้ใช้ไม่ได้ใช้งานนานกว่า 60 วินาที การหมดอายุของเซสชันทำได้โดยการตั้งเวลาหมดอายุสำหรับแฮชที่เก็บข้อมูลเซสชัน

เราสามารถใช้คำสั่ง EXPIRE ได้ดังนี้:

หมดเวลา:id: 1000 :ผู้ใช้: 10 10


ดังที่กล่าวไว้ ค่าระยะหมดเวลาถูกตั้งไว้ที่ 10 วินาที


ตามที่คาดไว้ ค่าส่งคืนคือ 1 ซึ่งหมายความว่า TTL ได้รับการตั้งค่าสำเร็จสำหรับแฮช ตรวจสอบเวลาที่เหลือก่อนที่แฮชคีย์จะถูกลบออกจากร้าน Redis คำสั่ง TTL สามารถใช้ได้ดังนี้:

เซสชัน ttl:id: 1000 :ผู้ใช้: 10



ตามที่แสดงในผลลัพธ์ เหลือเวลาอีกสามวินาทีก่อนที่จะลบแฮชโดยอัตโนมัติ หลังจาก 10 วินาที เอาต์พุตคำสั่ง TTL จะเป็นดังนี้:


เนื่องจากมีการตอบกลับเป็นจำนวนเต็ม -2 แฮชจึงไม่มีอยู่

ตั้งค่าระยะหมดเวลาตามการมีอยู่ของเวลาหมดอายุ

คำสั่ง EXPIRE ยอมรับอาร์กิวเมนต์ NX และ XX เพื่อตั้งค่าการหมดเวลาใหม่ตามการมีอยู่ของการหมดอายุสำหรับแฮชที่ระบุ มาสร้างแฮชใหม่กับ noTimeOut กุญแจ .

hmset noTimeOut ชื่อ 'ทดสอบ'


มาลองตั้งค่าการหมดอายุใหม่เป็นแฮชก่อนหน้ากัน นอกจากนี้ เราส่งอาร์กิวเมนต์ XX ไปยังคำสั่ง EXPIRE ด้วยเช่นกัน

หมดอายุ noTimeOut สิบห้า XX


เนื่องจากเราระบุ XX ตัวเลือกในคำสั่ง เวลาหมดอายุจะไม่ถูกตั้งค่า ตัวเลือก XX ไม่อนุญาตให้คุณตั้งเวลาหมดอายุใหม่หากไม่มีการหมดเวลาที่เกี่ยวข้องกับแฮชคีย์ที่ระบุ


ถ้าเราใช้ NX ตัวเลือก ค่าการหมดเวลาถูกตั้งค่าเป็น 15

หมดอายุ noTimeOut สิบห้า NX



คำสั่ง EXPIRE ส่งคืนการตอบกลับจำนวนเต็ม 1 ซึ่งหมายความว่าการหมดเวลาได้รับการตั้งค่าอย่างถูกต้อง

ตั้งค่าไทม์เอาต์ตามค่าไทม์เอาต์ที่มีอยู่

ตัวเลือก GT และ LT สามารถใช้ตั้งค่าเวลาหมดอายุของแฮชตามระยะเวลาหมดเวลาที่มีอยู่ได้

มาสร้างแฮชใหม่ที่เรียกว่า hashWithTimeout.

hmset hashWithTimeout field1 value1


ต่อไป เราตั้งเวลาหมดอายุ 200 วินาทีสำหรับแฮช

หมดอายุ hashWithTimeout 200


ลองตั้งค่าไทม์เอาต์ใหม่ 100 วินาทีสำหรับแฮชพร้อมกับตัวเลือก GT ดังนี้:

หมดอายุ hashWithTimeout 100 GT


เนื่องจากมีการระบุตัวเลือก GT คำสั่ง EXPIRE จะตรวจสอบว่าค่าไทม์เอาต์ใหม่มีค่ามากกว่าค่าที่มีอยู่และตั้งเวลาหมดอายุใหม่หรือไม่ ในตัวอย่างนี้ ระยะหมดเวลาใหม่ไม่เกินระยะหมดเวลาที่มีอยู่ ดังนั้น คำสั่งจะไม่ตั้งค่าเวลาหมดอายุใหม่และ 0 จะถูกส่งกลับ


ลองใช้ตัวเลือก LT แทน GT เนื่องจากเวลาหมดอายุใหม่ต่ำกว่าเวลาปัจจุบัน คำสั่งต่อไปนี้ควรตั้งค่าการหมดเวลาใหม่สำเร็จ

หมดอายุ hashWithTimeout 100 LT


บทสรุป

กล่าวโดยย่อ คำสั่ง Redis EXPIRE ใช้เพื่อตั้งค่า TTL สำหรับคีย์ที่กำหนด ตามค่าเริ่มต้น แฮชคีย์ Redis จะไม่เชื่อมโยงกับการหมดเวลาใดๆ ที่เรียกว่าไม่ลบเลือน ตามที่กล่าวไว้ คำสั่ง EXPIRE ใช้เพื่อตั้งค่าการหมดเวลาบนแฮช Redis โดยปกติ แฮชจะถูกลบออกจากที่เก็บข้อมูล Redis หลังจากระยะเวลาที่ระบุเป็นค่าการหมดเวลา ตามที่แสดงในตัวอย่าง คำสั่ง EXPIRE ยอมรับอาร์กิวเมนต์ที่เป็นทางเลือก เช่น XX, NX, GT และ LT เพื่อตั้งค่าการหมดอายุของแฮชตามเงื่อนไข