Redis và Mysql phân tích tính nhất quán dữ liệu đồng thời cao trong hệ thống (Backend Level 4, 5)

Nội dung bài viết

Video học lập trình mỗi ngày

Đối với Lập Trình Viên Backend lâu năm không cần phải giải thích tính quan trọng của cache (redis, memcached) nó được sử dụng rộng rãi trong các dự án do tính đồng thời cao và hiệu suất cao không phải bàn cãi, nhưng nó có nhược điểm đó là tính nhất quán. Vậy trong bài viết này, chúng ta sẽ xem xét những vấn đề vẫn còn tranh cãi.

Đọc cache

Trước hết, cache đã được sử dụng rộng rãi trong các dự án có tính đồng thời cao và đặc tính hiệu suất cao. Về việc đọc cache thì mọi người không còn nghi ngờ gì nữa, họ đều tiến hành các hoạt động nghiệp vụ theo quy trình như tôi đã giới thiệu trước đó. Nếu như đồng chí nào ghé qua thôi thì tôi cũng có thể show hình ảnh việc đọc cache bên dưới.

Tính nhất quán redis

Ghi cache

Trên kia là việc Write-back Cache, còn trọng tâm chính của bài viết này là ở đây. XƯơng máu cũng nằm ở đây, tội lỗi cũng ở đây và mồ chôn cũng nằm ở đây. Nói đến việc set cache hay ghi cache thậm chí cập nhật cache, sau khi cập nhật cơ sở dữ liệu ở đây tôi cho là mySQL (à tôi đang triển khai series về MySQL, anh chị hứng thú thì vào xem) thì liệu trách nhiệm của chúng ta nên cập nhật cache hay xóa cache? Hoặc xóa cache trước rồi mới cập nhật cơ sở dữ liệu, thực tế còn có rất nhiều tranh cãi, nhưng với team tôi thì chúng tôi đã thống nhất với một phương pháp. Kéo xuống dưới xem thử bạn có gì?

Bây giờ tôi sẽ có hai cách xử lý tính nhất quán dữ liệu giữa MySQL và Redis. Đầu tiên là cách mà các anh chị mới làm về Backend cũng có thể thực hiện được mà không cần bài viết này đó là set thời gian hết hạn cho cache. Nghĩa là tôi set dữ liệu đó một ngày sẽ tự xóa, ý chang phần send OTP verify Email mà thôi đã nói.

Khi cache bị xóa thì lần truy cập tiếp theo thì nó sẽ thực hiện lại y chang hình vẽ trên. Ngước lên chút anh em.

Nhưng đó là anh em mới zô or là dạng blog cơ bản. Liệu các dữ liệu có tính đồng thời cao ví dụ mua chứng khoán thì sao. Sẽ rất phức tạp, chúng ta sẽ phân tích nó từ từ.. Ở đây chúng ta thảo luận về ba chiến lược cập nhật:

  1. Cập nhật cơ sở dữ liệu trước, sau đó cập nhật cache
  2. Xóa cache trước, sau đó cập nhật cơ sở dữ liệu
  3. Cập nhật cơ sở dữ liệu trước, sau đó xóa cache

3 cách này vẫn còn tranh cãi vì sao? Tôi đã tốn công giải thích cụ thể bằng hình vẽ và thực tế ở "Là một Backend bạn đã từng gặp những trường hợp này chưa?" ở đó sẽ rõ ràng hơn nhiều.

Backend 2024

Ngoài phần này tôi còn cung cấp nhiều bài học và tư liệu trong cache, nếu bạn quan tâm vui lòng ghé qua github - tư liệu backend để xem tất cả những gì tôi liệt kê.

Và đương nhiên phương pháp này tôi sẽ triển khai nó trong phần Trở thành Backend chuyên nghiệp với nỗ lực của bạn. Tôi có thể đưa hình ảnh cho anh chị

series redis backend

Có thể bạn đã bị missing