Lists cho phép trùng lặp nhưng không cung cấp một cách đơn giản để kiểm tra sự tồn tại và như @Fritzy khuyên, bạn có cần phải:
- Tạo nhiều hoạt động (loại bỏ sau đó thêm một lần nữa được tìm thấy) để kiểm tra đơn giản = Chi phí trong thời gian
- Duy trì một bộ riêng biệt = Chi phí trong bộ nhớ
tôi ngạc nhiên không ai khuyên bạn sử dụng hoặc là một Hash Table hoặc một Sắp xếp Set trong đó kết hợp những ưu điểm của phép tráo (bằng cách lưu trữ số lượng các yếu tố như giá trị - Hash Table, hoặc điểm - Sắp xếp Set) và thành viên chỉ mục bởi thiên nhiên của bảng/bộ băm.
Hash Table
Để kiểm tra sự tồn tại một trọng điểm, sử dụng lệnh HGET
. Nó trả về một câu trả lời nil
nếu thành viên được chỉ định không tồn tại.
Để thêm thành viên mới, chỉ cần sử dụng HINCRBY
sẽ cập nhật giá trị (ví dụ: số thành phần có tên thành viên) hoặc tạo thành viên mới nếu nó không tồn tại.
Sắp xếp Set
Để kiểm tra sự tồn tại một trọng điểm, sử dụng một trong ba lệnh sau:
Họ trả về câu trả lời nil
nếu thành viên được chỉ định không tồn tại.
Để thêm thành viên mới, chỉ cần sử dụng ZINCRBY
sẽ cập nhật điểm (ví dụ: số thành phần có tên thành viên) hoặc tạo thành viên mới nếu nó không tồn tại.
Tóm lại: Sắp xếp Thiết hoặc Bàn Hash phép bạn thực hiện tất cả các hoạt động với yêu cầu của bạn với một lệnh đơn.
Nguồn
2014-08-18 17:10:26
+1 cho MULTI-EXEC – maximus
@fritzy nó sẽ có thể xây dựng thêm về cách thực hiện SET/LIST hoặc chỉ cho tôi một nơi nào đó, cảm ơn. –
Vì cả LREM và SREM đều là O (N) thì có lẽ tốt hơn là không có một bộ riêng biệt (trừ khi, tất nhiên, bạn định xóa toàn bộ tập hợp chứ không phải từng mục). –