Giả sử tôi tải dữ liệu người dùng từ cơ sở dữ liệu của mình sang redis. Giả sử 5 giây đã trôi qua và thông tin người dùng trong cơ sở dữ liệu đã được cập nhật.
Cách tốt nhất để kiểm tra xem dữ liệu trong redis có không đồng bộ không? Bạn có thực hiện các cuộc gọi thường xuyên đến cơ sở dữ liệu và kiểm tra xem dữ liệu của bạn có giống với dữ liệu được lưu trữ trong cơ sở dữ liệu không? Hoặc kiểm tra khi nào một số dữ liệu được đưa vào cơ sở dữ liệu?
Tôi đang sử dụng stackexchange.redis làm khách hàng, nếu điều đó tạo ra sự khác biệt.
Câu trả lời cho câu hỏi của bạn phụ thuộc vào kiến trúc và phong cách phần mềm, liệu ứng dụng của bạn có hợp lệ hay không.
Nếu bạn chỉ có một ứng dụng và một thành phần (phương pháp nguyên khối), việc đồng bộ hóa dữ liệu sẽ diễn ra trong ứng dụng. Cập nhật người dùng thông qua ứng dụng và ghi bản ghi vào cơ sở dữ liệu và Redis.
Điều này hơi khó khăn nếu bạn có nhiều ứng dụng/thành phần (phương pháp tiếp cận microservice). Một ứng dụng cập nhật thông tin người dùng trong cơ sở dữ liệu, nhưng các ứng dụng khác không biết về nó. Vì vậy, bạn cũng vậy:
- Vô hiệu hóa dữ liệu trong Redis để ứng dụng tiếp theo lấy thông tin chi tiết về người dùng trước tiên sẽ thấy rằng không có gì được lưu trữ trong Redis, sau đó đi đến cơ sở dữ liệu để lấy bản ghi và lưu trữ trong Redis
- Hoặc: sử dụng TTL (sự lựa chọn tồi tệ nhất từ trước đến nay).
- Nếu các bản ghi được ghi vào cơ sở dữ liệu "bằng cách nào đó" và bạn không có quyền kiểm soát ứng dụng thì đó là trường hợp xấu nhất. Trong trường hợp này tôi sẽ chọn TTL.
HTH, Mark
Tôi là một lập trình viên xuất sắc, rất giỏi!