Ở 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: