ใน Redis การลบออบเจ็กต์ non-string ขนาดใหญ่ เช่น hashes, lists, sets, และ sorted sets อาจบล็อกเซิร์ฟเวอร์เป็นเวลานาน ส่งผลให้เกิดปัญหา เช่น client-side timeouts เนื่องจากสองแง่มุมของการทำงานของ Redis:
Redis เป็น single-threaded หมายความว่ามันประมวลผลคำสั่งทีละคำสั่งเท่านั้น ไม่ว่าจะมี clients เชื่อมต่อกี่ตัว หากคำสั่งใช้เวลานาน ทุกคำสั่งอื่นจะต้องรอ
DELเป็นการดำเนินการO(n)สำหรับ hashes, lists, sets และ sorted sets หมายความว่าออบเจ็กต์ 1 ล้าน elements จะใช้เวลาลบประมาณ 10,000 เท่าของออบเจ็กต์ประเภทเดียวกันที่มี 100 elements
โชคดีที่ Redis ให้เครื่องมือบางอย่างมาใช้ลบออบเจ็กต์ขนาดใหญ่โดยไม่บล็อกเซิร์ฟเวอร์นานเกินไป เรารวบรวมวิธีแก้ไขไว้ที่นี่:
- การลบ Hashes ขนาดใหญ่
- การลบ Lists ขนาดใหญ่
- การลบ Sets ขนาดใหญ่
- การลบ Sorted Sets ขนาดใหญ่