Trong Redis, xóa các đối tượng lớn non-string như hash, list, set, và sorted set có thể chặn server của bạn trong một khoảng thời gian đáng kể, có thể gây ra các vấn đề như client-side timeout. Điều này là do hai khía cạnh của cách Redis hoạt động:
-
Redis là single-threaded (đơn luồng). Điều này có nghĩa là nó chỉ có thể xử lý một lệnh tại một thời điểm bất kể bạn có bao nhiêu client kết nối. Nếu một lệnh mất nhiều thời gian để chạy, mọi lệnh khác sẽ phải chờ.
-
DELlà một phép toánO(n)trên hash, list, set và sorted set. Điều này có nghĩa là một đối tượng với 1 triệu phần tử sẽ mất khoảng 10.000x lâu hơn để xóa so với một đối tượng tương tự cùng loại với 100 phần tử.
May mắn thay, Redis cung cấp cho chúng ta một số công cụ có thể dùng để xóa các đối tượng lớn mà không chặn server trong thời gian dài. Chúng tôi đã biên so giải pháp của chúng tôi ở đây:
- Xóa Hash Lớn
- Xóa List Lớn
- Xóa Set Lớn
- Xóa Sorted Set Lớn