So sánh các loại bộ nhớ cache Laravel phần 2: Kết quả test và kết luận

shape
shape
shape
shape
shape
shape
shape
shape
So sánh các loại bộ nhớ cache Laravel phần 2: Kết quả test và kết luận

Ở phần 1 mình đã giới thiệu các bạn về các loại cache mặc định của Laravel, nếu bạn nào chưa xem, có thể vào link này để xem lại. https://boonygroup.com/blog/chi-tiet/so-sanh-cac-loai-bo-nho-cache-laravel-phan-1-file-vs-memcached-vs-redis/

Ở phần này tác giả để kết quả benchmark và kết luận để giúp các bạn lựa chọn loại cache phù hợp để thiết lập cho dự án của mình.

Laravel cache driver speed tests

APC cache driver

Test Read Write
Integer 0.770 0.770
Stats 0.679 2.367
Paragraph 0.631 2.128
Article 0.676 2.433
Webpage 0.694 2.120

Database (MySQL) cache driver

Test Read Write
Integer 642.146 390.471
Stats 714.820 412.997
Paragraph 811.301 383.895
Article 1151.277 412.056
Webpage 3643.461 765.362

Database (SQLite) cache driver

Test Read Write
Integer 1432.321 137.590
Stats 1353.896 137.828
Paragraph 1132.085 161.893
Article 1194.738 173.334
Webpage 2159.022 253.023

File cache driver

Test Read Write
Integer 147.066 33.503
Stats 132.957 35.460
Paragraph 153.218 35.498
Article 158.506 46.110
Webpage 395.767 165.265

Memcached cache driver

Test Read Write
Integer 63.500 35.403
Stats 63.671 38.796
Paragraph 63.031 37.054
Article 138.603 74.496
Webpage 1125.189 842.751

Redis cache driver

Test Read Write
Integer 57.925 54.762
Stats 55.013 54.390
Paragraph 60.338 56.676
Article 44035.899 78.775
Webpage 1192.044 378.57

Nhật xét hiệu suất

Từ việc xem xét các kết quả ở trên, rõ ràng là trình APC cache cho đến nay là trình điều khiển bộ nhớ cache Laravel nhanh nhất trong các thử nghiệm của chúng tôi với tốc độ tốt hơn nhiều so với bất kỳ trình điều khiển nào khác. Có rất ít sự khác biệt về thời gian giữa các tập dữ liệu nhỏ hơn và lớn hơn.

Tiếp theo, hai kho lưu trữ bộ nhớ đệm dựa trên bộ nhớ Memcached và Redis đều cho kết quả tương tự - mặc dù tốc độ ghi tốt hơn một chút trong Memcached và tốc độ đọc tốt hơn một chút trong Redis. Bạn có thể nhận thấy tốc độ đọc khá cao đối với dữ liệu "article" trong Redis. Sau khi thử các lượng dữ liệu hơi khác nhau và các máy chủ khác nhau trong các trung tâm dữ liệu khác nhau, sự bất thường này vẫn xảy ra.

Trình điều khiển file cache Laravel đứng ở vị trí thứ ba, với tốc độ gần gấp đôi tốc độ đạt được với Redis và Memcached.

Bộ đệm trong Laravel chậm thứ hai dường như là bộ đệm sử dụng cơ sở dữ liệu MySQL (5.7), với tốc độ chậm hơn khoảng 5 lần so với tốc độ đạt được với Redis và Memcached.

Cuối cùng, hệ thống bộ nhớ đệm chậm nhất trong các thử nghiệm của chúng tôi là trình điều khiển cơ sở dữ liệu được kết nối với SQLite (một cơ sở dữ liệu nhẹ và tiện) - tốc độ dường như chậm hơn khoảng 10 lần so với tốc độ đạt được với Redis và Memcached.

Vì vậy, tôi nên sử dụng trình điều khiển bộ nhớ cache  nào để thiết kế website hay xây dựng Laravel app?

Như mình đã đề cập ở phần đầu của bài viết này, câu trả lời có lẽ là "phụ thuộc vào hoàn cảnh".

APC rõ ràng đã cho kết quả tốt nhất cho đến nay, tuy nhiên nó chỉ có thể được sử dụng bởi single PHP process. Vì vậy, nếu bạn cần dữ liệu đã lưu trong bộ nhớ cache để được truy cập thông qua các yêu cầu HTTP và CLI, hoặc thậm chí trên nhiều máy chủ, bạn sẽ không thể sử dụng nó. Đối với các ứng dụng Laravel máy chủ độc lập, đơn giản, có lẽ đó là lựa chọn tốt nhất của bạn.

Hiện nay APC cache không còn được tin cậy sử dụng từ sau php version 7.0. Laravel cũng đã thiết lập chế độ mặc định là dạng File

Nếu bạn có kiến thức về quản lý máy chủ (phải cài đặt và duy trì các dịch vụ bổ sung), thì các hệ thống bộ nhớ đệm dựa trên dịch vụ như Memcached và Redis là những lựa chọn tuyệt vời. Một công cụ cung cấp máy chủ như Laravel Forge (có phí) giúp thiết lập ban đầu dễ dàng hơn và dịch vụ được lưu trữ được quản lý hoàn toàn sẽ giảm đáng kể các tác vụ bảo trì. Nếu bạn có kế hoạch lưu trữ một lượng lớn dữ liệu vào bộ nhớ đệm, nhiều nhà cung cấp máy chủ sẽ đáp ứng các hệ thống máy chủ có bộ nhớ cao.

Tips: Mình đã tested trên bộ quản lý CWP và thấy việc cài đặt Memcached có phần phức tạp hơn redis. Mình nghĩ bạn nên tập trung vào Redis

Đối với Laravel File cache, nó cực kỳ dễ thiết lập và cung cấp tốc độ OK, nhưng bạn có thể gặp sự cố với IO đĩa nếu ứng dụng của bạn có mức hoạt động cao. Nó có thể là một lựa chọn tốt để bắt đầu, nhưng bạn có thể cần phải thay thế nó bằng một bộ nhớ cache khác lưu trữ nếu ứng dụng của bạn thấy lưu lượng truy cập tăng lên.

Cuối cùng, chúng ta đến với các trình điều khiển bộ nhớ cache của cơ sở dữ liệu. Một lần nữa, chúng là một lựa chọn tốt nếu bạn muốn có một giải pháp nhanh chóng và dễ dàng vì bạn có thể đã có sẵn một database system nào đó. Nếu ưu tiên về hiệu suất nhất, thì đây sẽ không phải là câu trả lời cho bạn vì chúng có xu hướng chậm nhất và sẽ yêu cầu các tài nguyên máy chủ khác - chẳng hạn như sử dụng CPU cho MySQL.

Nguồn

https://www.georgebuckingham.com/laravel-cache-driver-performance/

Hình từ unsplash tác giả Stephen Dawson  

Bình luận:

    Email của bạn sẽ được bảo mật
    Các trường có dấu * bắt buộc nhập

    Đang tải...

    Bài nhiều người quan tâm

    Tags