Tôi muốn biết điều gì sẽ là một cách tiếp cận tốt hơn để vô hiệu hóa / cập nhật các đối tượng bộ đệm.
Điều kiện tiên quyết
- Có máy chủ memcached từ xa (phục vụ như bộ đệm cho nhiều ứng dụng)
- Tất cả các máy chủ được lưu trữ bởi azure (vùng ái lực, cùng trung tâm dữ liệu)
- Kích thước đối tượng bộ nhớ cache dao động từ 200 byte đến 50 kilobyte
Cách tiếp cận 1 (lưu trữ trong bộ đệm càng sớm càng tốt)
- Đối tượng A được tạo -> lưu trữ trong cơ sở dữ liệu và lưu trữ trong bộ đệm
- Đối tượng A được khách hàng yêu cầu -> kiểm tra sự tồn tại của bộ đệm, nếu không thì tìm nạp từ cơ sở dữ liệu và lưu trữ trong bộ đệm
- Đối tượng A được cập nhật -> lưu trữ trong cơ sở dữ liệu, lưu trữ trong bộ đệm
Cách tiếp cận 1 dường như đơn giản hơn. Nếu một cái gì đó được tạo ra, đặt trong bộ đệm càng sớm càng tốt. Bất kể ai đó sẽ cần nó.
Cách tiếp cận 2 (lưu trữ bộ nhớ cache lười biếng)
- Đối tượng A được tạo -> lưu trữ trong cơ sở dữ liệu
- Đối tượng A được khách hàng yêu cầu -> kiểm tra sự tồn tại của bộ đệm, nếu không thì tìm nạp từ cơ sở dữ liệu và lưu trữ trong bộ đệm
- Đối tượng A được cập nhật -> lưu trữ trong cơ sở dữ liệu, xóa khóa trong bộ đệm
Cách tiếp cận 2 dường như được nhận biết nhiều hơn về bộ nhớ. Trong phương pháp này chỉ có các mục được yêu cầu vào bộ đệm.
Câu hỏi 1: Trong suy nghĩ về hiệu suất, điều gì sẽ là một cách tiếp cận tốt hơn? Bộ nhớ cũng như CPU chưa được tính.
Câu hỏi 2: Suy nghĩ của tôi có phải là một loại tối ưu hóa sớm?
Câu 3: Có suy nghĩ nào khác không? Cách tiếp cận khác?