質問
Bài viết này giới thiệu một bộ đệm sử dụng cả bộ nhớ và memcached.
Cập nhật: 

Bài viết này giới thiệu một cơ chế lưu trữ bằng cách sử dụng cả bộ nhớ cache và memcached, có hiệu quả khi xây dựng các trang web phương tiện và API của chúng.

Tóm tắt

  • Trong Ruby on Rails, tối ưu hóa một lượng truy vấn tới DB càng nhiều càng tốt là điều quan trọng để nâng cao hiệu quả
  • Một cơ chế bộ đệm có thể được thực hiện bằng cách sử dụng cả bộ nhớ cache và bộ nhớ đệm với các đặc tính bộ đệm tốt của cả hai.

Tính năng dữ liệu trang và chiến lược lưu trữ

  • Các trang web có các chiến lược bộ nhớ đệm khác nhau cho các đặc điểm khác nhau, chẳng hạn như tần suất cập nhật dữ liệu
  • Trang web này Price Sale là trang web truyền thông không quan trọng nếu thông tin hiển thị trong chế độ xem đã cũ vài giờ.

Điều quan trọng nhất trong việc làm cho Rails nhanh hơn

  • Tránh truy cập DB càng nhiều càng tốt.
  • Khi truy cập DB, chỉ các cột được yêu cầu được lấy.
  • Giảm việc tạo các đối tượng Ruby càng nhiều càng tốt.
  • Cần hiểu cấu trúc cơ bản trên của dòng tiền.

Các tính năng của memcached và Bộ nhớ cache

Cả hai phần mềm trung gian, chẳng hạn như memcached (Redis) và các cơ chế bộ nhớ đệm dựa trên bộ nhớ đều có những đặc điểm riêng.

memcached

  • Khả năng chia sẻ bộ nhớ cache giữa các tiến trình bằng cách sử dụng cùng một memcached.
  • Nếu bạn có nhiều quyền truy cập vào memcached, đôi khi đó là một nút cổ chai.
  • Bộ nhớ đệm các đối tượng phức tạp trong memcached mất nhiều thời gian để tuần tự hóa và giải tuần tự hóa.
  • Tốt hơn là chỉ định điều này trong Rails.cache vì nó có thể được chia sẻ bởi nhiều quy trình.
  • Để biết tổng quan về việc triển khai, tôi khuyên bạn nên Bộ nhớ đệm với Rails: Tổng quan vì nó được viết một cách dễ dàng để hiểu cách

Bộ nhớ cache (ghi nhớ)

  • Bộ đệm theo quy trình; bộ nhớ đệm không được chia sẻ với các quá trình khác
  • Đọc / ghi nhanh với ít hoặc không có nút cổ chai
  • matthewrudy / memoist là một trong những thư viện tốt cho bộ nhớ cache.

Cache sử dụng cả bộ nhớ và memcached

Cấu trúc bộ đệm như sau:

  • Sử dụng memcached và bộ nhớ cache cùng nhau để cải thiện hiệu suất
  • Định kỳ lưu trữ kết quả tính toán không đồng bộ trong memcached. Nếu không có kết quả tính toán, giá trị được lấy từ DB.
  • Khi truy cập memcached, nó được lưu trong bộ nhớ cache và nội dung của bộ nhớ cache được đọc lần thứ hai.
  • Làm mới bộ nhớ cache và memcached mỗi giờ.

Điều này cho phép bạn chia sẻ bộ đệm trong khi giới hạn số lượng truy cập vào memcached.

Ngoài ra, dữ liệu được truy cập thường xuyên có thể tận dụng phản ứng nhanh của bộ nhớ cache.

Tăng tỷ lệ nhấn bộ nhớ cache cho memcadched

  • Điểm quan trọng nhất trong chiến lược này là làm mới đúng memcached, bộ nhớ cache.
  • Để tăng tốc độ nhấn bộ nhớ cache của memcached, nó sẽ tính toán không đồng bộ và làm mới kết quả tính toán.

Biến bộ đệm thành một cơ chế làm mới thông thường

memcached

  • Định kỳ thực hiện xử lý hàng loạt với nhiệm vụ cào và lưu trữ kết quả tính toán trong memcached.
  • Làm mới bộ đệm theo định kỳ tại thời điểm đó.

Bộ nhớ cache (ghi nhớ)

Quá trình ứng dụng web (PUMA) thực hiện một cơ chế để xóa bộ đệm sau một thời gian nhất định trôi qua trong after_action củaapplication_controll.rb và nó xóa bộ đệm theo định kỳ.

Trong quá trình thực hiện một công việc đang hoạt động, một cơ chế xóa bộ đệm được triển khai trong after_perform củaapplication_job.rb sau một thời gian nhất định và bộ đệm được xóa theo định kỳ.

Ghi chú về bộ nhớ đệm

  • Phím cache phải là duy nhất. Nếu bạn sử dụng một mảng làm khóa bộ đệm, hãy cẩn thận không tạo thứ tự sắp xếp hoặc các phần tử trống.
この記事が気に入ったら応援お願いします🙏
3
ツイート
LINE
Developer
Price Rank Dev
I use Next.js (React) and Firebase (Firestore / Auth) for development. We are also developing APIs for Ruby on Rails and GraphQL. Our team members are 6 Vietnamese and Japanese engineers.