2013-09-24 28 views
6

Trong Redis, một số hoạt động như SINTERSTORECác hoạt động kéo dài có bị khóa không?

Thời gian phức tạp: O (N * M) trường hợp xấu nhất đó N là cardinality của tập nhỏ nhất và M là số lượng các bộ.

Trong trường hợp sử dụng của tôi, tôi hy vọng sẽ so sánh các bộ có từ 15.000 mục trở lên. Thực hiện thao tác N * M trên các bộ này sẽ là O (30.000). Không có yêu cầu về thời gian cho hoạt động, có nghĩa là tôi không quan tâm phải mất bao lâu. Câu hỏi của tôi là liệu Redis của tôi sẽ khóa trong khi tính toán này đang xảy ra. Bất kỳ ý tưởng?

Trả lời

2

Câu trả lời đơn giản là "Có", bởi vì Redis được dựa trên một kiến ​​trúc đơn luồng.

Câu trả lời không đơn giản là "nó phụ thuộc" - nếu bạn phân đoạn Redis của bạn theo cách tối ưu, chỉ phân đoạn mà thao tác phức tạp này bị chặn, các mảnh khác thì không.

1

Redis là đơn luồng. Nó không khóa bất cứ thứ gì, nhưng nó sẽ không xử lý bất kỳ lệnh nào khác cho đến khi lệnh đó kết thúc. Vì vậy, nó như thể Redis đã bị khóa, mà tôi nghĩ là những gì bạn có nghĩa là.

Xem thêm: Locking and Redis

Các vấn đề liên quan