Khi nói đến cache nói giúp website của bạn tăng tốc lên rất nhiều và giảm tải cho máy chủ của bạn rất tốt và có rất nhiều thể loại cache và cấp bậc cache khác nhau trên WordPress. Redis object cache là 1 cấp độ trong số đó.
Nếu bạn chưa biết bạn đang và đã kích hoạt sử dụng được bao nhiêu thể loại cache, và đã kích hoạt đầy đủ cache cho website của bạn chưa thì bạn hãy tham khảo bài viết: 5 cấp độ cache website WordPress
Nếu bạn muốn tìm hiểu sâu hơn Object Cache là gì và nó hoạt động như thế nào với WordPress. Bạn có thể tham khảo: Object Caching là gì
Bài viết này thì mình sẽ chia sẻ hướng dẫn kích hoạt redis object cache từ a đến z tối ưu nhất dành riêng cho website WordPress trên VPS. Và mình sẽ tiết lộ những bí mật để cấu hình config làm sao để redis object cache hoạt động hiệu năng đỉnh cao nhất dành cho WordPress nhé.
Bài viết này sẽ rất hữu ích cải thiện tốc độ load website wordpress rất nhiều đặc biệt là những website sử dụng nhiều truy vấn database như điển hình là trang thương mai điện tử…
Mục lục
Redis là gì
Mặc định WordPress cũng hỗ trợ object cache được gọi là WP_Object_Cache nhưng nó chỉ là dạng mô phỏng object cache hoạt động rất chán, kém hiệu quả nó chỉ mô phỏng lại các object cache đỉnh cao như là redis và memcached.
Ở trong bài viết này chúng mình sẽ cùng nhau kích hoạt sử dụng redis object cache.
Redis object cache được rất nhiều dự án lớn và nhỏ sử dụng nổi tiếng là những dự án lớn sử dụng redis object cache như GitHub, Weibo, Pinterest, StackOverflow … có thể nói redis vẫn luôn là công cụ hiệu quả có chỗ đứng nhất định.
Redis được hỗ trợ bởi rất nhiều ngôn ngữ lập trình như JavaScript, Java, Go, C, C++, C#, Python, Ruby, PHP, Objective-C, … quan trọng là có hỗ trợ PHP ngôn ngữ lập trình của WordPress sử dụng chính. (nếu không có php thì bài viết này sẽ không ra đời)
Redis được viết bằng ngôn ngữ lập trình C, vậy nên tốc độ của nó rất nhanh! chính vì điều đó bạn chỉ có thể cài đặt redis nó bằng cấp webserver không thể bằng cài đặt nó bằng các cấp plugin WordPress chạy PHP được.
Nói về so sánh giữa redis và memcached thì phạm trù rất là rộng và dài chắc bài viết này mình không thể chia sẻ ngay được nếu các bạn có nhu cầu tìm hiểu có thể mình sẽ có 1 bài viết khác so sánh sau.
Tóm lại với cá nhân mình so sánh ngắn gọn của redis và memcached: Redis là một object cache công nghệ mới nhiều tính năng đỉnh cao hơn memcached và cũng rất mạnh rất nhanh. Trong nhiều trường hợp website thức tạp nâng cao thì Redis to ra nhanh hơn memcached và Redis rất hiệu quả những website thương mai điện tử cần truy vấn rất nhiều cơ sở dữ liệu sẽ cải thiện rất nhiều tốc độ load website.
Hướng dẫn cách cài đặt redis object cache
Bước 1: Bạn cần kết nối ssh terminal vào vps của bạn yêu cầu sử dụng tài khoản root.
Bạn sử dụng các phần mềm kết nối ssh mà bạn thường xuyên sử dụng và sử dụng tài khoản root để login, những điều này thì quá hết sức là cơ bản rồi.
Bước 2: Cài đặt redis bằng kho lưu trữ hệ điều hành linux
Lệnh Khi bạn sử dụng hệ điều hành CENTOS, rocky linux, almalinux…:
yum intsall redis -y
Lệnh khi bạn sử dụng hệ điều hành ubuntu, debian…:
apt install redis-server redis-tools -y
Bước 3: Cài đặt php extension redis.
Tùy vào nền tảng webserver và nền tảng hệ điều hành linxu bạn đang sử dụng sẽ có cách cài riêng:
ví dụ như nếu bạn đang sử dụng hệ điều hành Centos, rocky linux, almalinux… mà chạy cùng với webserver openlitespeed.
yum install lsphp74-pecl-redis -y
hãy thay 74 bằng phiên bản php bạn đang sử dụng. (74 tức là 7.4), nếu bạn đang dùng php 8.0 thì thay là 80 hoắc đang dùng php 7.3 thì thay bằng 73…
còn đang dùng php hay php-fpm bình thường apache hay nginx trên centos, rocky linux, almalinux thì dùng lệnh:
yum install php-pecl-redis5 -y
còn đang dùng php trên ubuntu, debian…
apt install php-redis -y
Mỗi một phiên bản php và kho lưu trữ của hệ điều hành tận chí có cách kích hoạt php extension khác nhau các bạn có thể tự lên google search tìm hiểu nhé có thể may mắn thì được hỗ trợ từ kho lưu trữ cài đặt rất tiện không thì phải sử dụng cài bằng source code cũng tùy vào phiên bản php bạn đang sử dụng và loại webserver bạn đang dùng và lại hệ điều hành bạn đang sử dụng sẽ khác nhau một chút.
Mình chỉ thị phạm một số thứ cơ bản thế thôi nhé.
Bước 4: cấu hình redis.
Chắc đây là sẽ là phần quan trọng nhất trong bài viết này.
khi bạn sử dụng unix socket thì hiệu suất sẽ nhanh hơn 25% so với bạn sử dụng bằng giao thức tcp và an toàn về bảo mật hơn rất nhiều. Nếu bạn đang sử dụng mô hình máy chủ all in one vừa làm cả máy chủ database và vừa làm cả webserver thì không có lý gì không sử dụng giao thức unix socket để đem lại hiệu suất tốt hơn và bảo mật an toàn hơn.
Nếu bạn đặt máy chủ database riêng và máy chủ webserver riêng biệt thì bạn không thể triên khai qua unix socket được bạn phải dùng giao thức tcp. Nhưng trong bài viết này mình sẽ chỉ hướng dẫn triển khai với giao thức unix socket thôi nhé. vì mô hình lưu trữ all in one vừa làm máy chủ database và vừa làm webserver này vẫn rất rất nhiều anh em đang sử dụng.
file cấu hình redis: là ở /etc/redis.conf
unixsocket /var/run/redis/redis.sock unixsocketperm 777 maxmemory 128mb maxmemory-policy allkeys-lru
bạn hãy cho đoạn này vào đầu file : /etc/redis.conf
file cấu hình của redis.
mình sẽ giải thích từng dòng 1:
unixsocket /var/run/redis/redis.sock
unixsocketperm 777
là khai báo đường dẫn sử dụng giao thức unix socket là /var/run/redis/redis.sock
và chmod.
maxmemory 128mb
là số lượng ram tối ưu, để là 128MB là phù hợp với website WordPress, nếu là website nhỏ cơ bản thì hãy để là 64MB, nếu truy cập khá lớn thì để 128MB và tận chí là để 256MB là phù hợp với website wordpress.
maxmemory-policy allkeys-lru
là khi trong trường hợp redis sử dụng vượt các quá mức ăn ram đã quy định ở phần bên trên thì nó sẽ tự động clean xóa những dữ liệu ít được truy vấn đi và nhường lại vị trí cho những dữ liệu thường xuyên được truy vấn.
Bước 5: Phân quyền unix socket file.
Bạn paste từng dòng vào terminal của bạn:
mkdir -p /var/run/redis chmod 700 /var/lib/redis chown redis:redis /var/run/redis chown redis:redis /etc/redis.conf chmod 600 /etc/redis.conf
Bước 6: Khai báo SELinux
Bạn paste từng dòng vào terminal của bạn:
semanage permissive -a redis_t
Không phải ai cũng đang sử dụng SELinux.
Nếu bạn không biết SELinux là gì và không sử dụng nó thì bỏ qua bước này, nếu bạn có thời gian ngâm cứu về bảo mật thì có thể tự tìm hiểu từ khóa SELinux để ứng dụng nhé.
Bước 7: Khởi động kích hoạt redis và reboot webserver.
systemctl enable redis.service systemctl start redis.service
rồi bạn reboot lại webserver của bạn.
Mỗi webserver thì có câu lệnh reboot khác nhau.
Với nginx webserver:
systemctl restart nginx.service
Với LiteSpeed webserver
systemctl restart lshttpd.service
Với apache webserver
systemctl restart httpd.service
Như vậy là quá trình cài đặt hoàn tất. cài đặt redis object cache cho webserver.
Giờ chúng ta sẽ kích hoạt redis cho WordPress
Kết nối redis đến WordPress
Đây là bước bạn cứ hiểu đại loại là WordPress hướng dẫn redis làm cần phải làm gì cache ra sao, và làm thế nào?
Mình sẽ giới thiệu những cách mà mình thích và thường xuyên sử dụng để kết nối với redis với WordPress nhé.
Trước tiên để thì bạn cần phải xóa file trong mã nguồn của bạn: wp-content/object-cache.php
nếu có thì xóa nó đi và nếu không có thì thôi.
Bạn chỉ nên chọn 1 cách thức để kích hoạt thôi nhé, đừng sử dụng chồng tréo song song lẫn nhau sẽ làm xung đột tận chí có thể làm hỏng website của bạn.
1: Sử dụng plugin LiteSpeed Cache.
Litespeed Cache kết hợp với redis object cache đem lại hiệu suất cực kì là đỉnh cao tương thích rất tốt và được đồng bộ rất tốt, nếu bạn đang sử dụng plugin LiteSpeed Cache thì đây là lựa chọn không thể nào còn tốt hơn được nữa.
object cache: chuyển qua on
method: thì chuyển qua Redis
Bạn chỉ cần điền host: /var/run/redis/redis.sock
port để là 0
Rồi lưu save lại.
Không phải ai cũng có đang sử dụng LiteSpeed Cache. Giờ không dùng mà kích hoạt dùng mỗi object cache thì khá nặng mà đâu phải ai cũng có đang sử dụng Litespeed webserver mà để chạy được plugin LiteSpeed cache, Nếu trong trường hợp bạn không sử dụng LiteSpeed Cache thì thôi chúng mình sẽ đến lựa chọn thứ 2.
2: Sử dụng plugin WP REDIS.
Đây là cách mình cực kì yêu thích đêm lại hiệu suất cực kì tuyệt vời và cũng ít người chia sẻ rộng rãi. Nó có vẻ hơi khó sử dụng cho những người mới bắt đầu cơ bản, nhưng không sao có mình ở đây mình sẽ hướng dẫn các bạn, Nhưng yêu cầu vps của bạn phải hỗ trợ wp cli thì mới có thể thi triển được cách thức này.
Bạn có thể tham khảo: WP-CLI – Quản trị WordPress từ Terminal
bạn hãy cho đoạn code này vào file wp-config.php
website của bạn.
$redis_server = array( 'host' => '/var/run/redis/redis.sock', 'database' => 0, );
rồi trên terminal bạn hãy gõ đoạn mã lênh này: lưu ý hãy thay /home/giatuandz bằng đường dẫn mã nguồn website của bạn.
wp plugin install wp-redis --activate --allow-root --path=/home/giatuandz
wp redis enable --allow-root --path=/home/giatuandz
Như vậy là hoàn tất rồi.
Cách kích hoạt này nếu bạn có thể kết hợp với sử dụng kèm với các plugin cache html khác như wp rocket, swift performance… tương thích rất là ngon.
3: Sử dụng Plugin Redis Object Cache
Cách này cũng đem lại khả năng tương thích khá tốt như sử dụng wp redis nhưng cách này về hiệu suất thì sẽ không bằng được cách 2 nhưng về dễ dàng kích hoạt hoạt thì cách 3 này dễ dàng kích hoạt hơn nhiều, plugin Redis Object Cache hiện tại khá nhiều người sử dụng vì tính dễ kích hoạt của nó nhưng mình thấy về hiệu suất thì mình test thì khá ổn nhưng mà mình không bầu kết ấn tượng bằng cách 2 ở bên trên mình chia sẻ, nhưng cách này vì yêu điểm là rất dễ kích hoạt và nhiều người đang sử dụng cách này.
Cách này bạn chỉ cần vào: tải plugin Redis Object Cache
xong rồi cho đoạn code này vào file wp-config.php
define('WP_REDIS_SCHEME', 'unix'); define('WP_REDIS_PATH', '/var/run/redis/redis.sock');
Rồi sang bên Plugin Redis Object Cache rồi save lại là được.
như vậy là hoàn tất rồi. Cách kích hoạt này nếu bạn có thể kết hợp với sử dụng kèm với các plugin cache html khác như wp rocket, swift performance… tương thích rất là ngon.
Đây là 3 cách đánh giá về hiệu suất thì mình cảm thấy thực sự rất ấn tượng còn thêm 1 cách mình khá là khoái mình cũng sẽ bật mí cho mọi người là add file code php vào trong object cache.php vào thư mục wp-content mã nguồn là xong, luôn hiệu suất cũng rất ổn nhưng mà thiếu đi sự cập nhật lâu dài về sau và nhìn file đó tác giả update tận 6 năm trước rồi nghĩ cũng ngại mà mình test mọi thứ vẫn ổn nhưng mà lâu ngày không được update lên ngại và trong tương lai ai update cho anh em trong quá trình sử dụng nên cách này thì bỏ qua hướng dẫn mọi người, thôi không hướng dẫn anh em chi tiết cách này.
Với cá nhân mình hiện tại chỉ có 3 cách trên là cách kích hoạt đem lại hiệu suất cực kì ổn áp cho redis.
Bây giờ bạn cần kiểm tra test xem hệ thống redis của bạn đã hoạt động được chưa.
Kiểm tra redis đã hoạt động được chưa
bạn Paste đoạn mã này vào terminal của bạn.
redis-cli monitor
rồi bạn sang bên website click click mấy phát bên website, nếu trong bên màn hình terminal chuyển động ra nhiều giá trị gì đó có thể bạn hiểu và không hiểu mỗi khi bạn click vào bên website đã được kích hoạt redis tức là đã kích hoạt thành công nếu trong trường hợp nó đứng yên thì là kích hoạt không thành công.
Bạn có thể sử dụng plugin query monitor để xem hiệu quả của truy vấn database như thế nào rồi tự bạn đo lường trước và sau có redis và không có redis như thế nào, bạn cũng có thể test sử dụng các công cụ test như chrome dev tool để kiểm tra đo lượng tốc độ trước và sau khi sử dụng redis là như thế nào…
Xóa clear cache redis
nếu bạn có nhu cầu cần clean xóa cache redis thì bạn có thể sử dụng bằng cách:
- Sử dụng bằng terminal lệnh:
Bạn chỉ cần vào gõ lệnh này vào terminal là xong.redis-cli FLUSHALL
- Sử dụng bằng plugin WordPress sẽ có hỗ trợ tính năng này: là có thể tự chạy được hoặc bạn có thể xóa từng cấp plugin hỗ trợ: như litespeed, redis object cache
Kết luận:
Như vậy là hoàn tất rồi đó, hy vọng bài viết này sẽ hữu ích để cải thiện tốc độ load website wordpress, kích hoạt redis rất có giá trị về mặt hiệu suất đặc biệt là khi các bạn đang sử dụng những website truy vấn nhiều database như trang thương mại điện tử, diễn đàn, nhưng website không thể cache html page được, thì object cache là 1 lựa chọn cứu cách rất tốt.
Văn Vương đã bình luận:
Trong WP Tăng Tốc
kết nối redis với plugin w3 total cache có ổn không ad?
Gia Tuấn đã bình luận:
Trong WP Tăng Tốc
cá nhân mình trải nghiệm thì sử dụng w3 total cache để kết nối với redis tốc độ mình cảm giác rất chán hiệu suất kém, chắc không ai tải mỗi w3 total cache chỉ để cấu hình redis vì w3 total cache là plugin rất nặng và rất nhiều tính năng kèm theo, hiện tại với cá nhân mình w3 total cache không phải là lựa chọn tốt là năm 2021 nếu không muốn nói w3 total cache đã lỗi thời, năm 2021 này có rất nhiều plugin cache khác nhau bạn có thể thoái mái lựa chọn. nếu bạn muốn kết nối redis với wordpress thì 3 cách trên mình chia sẻ là lựa chọn mình cảm thấy là tốt nhất ở thời điểm hiện tại tùy hoàn cảnh của bạn để lựa chọn và sử dụng.
Tiểu Ca đã bình luận:
Trong WP Tăng Tốc
thằng redis này kết hợp vs wp rocket ổn k ad? Mình đang cấu hình nginx + rocket xài thấy cũng ok , k biết thêm thằng redis này nữa ổn k
Gia Tuấn đã bình luận:
Trong WP Tăng Tốc
nếu thêm redis vào nữa thì cũng rất ổn, nhưng với cơ bản con bài nginx + rocket với mình chạy rất chán nếu website nhiều page chạy cực mệt mình không thích con bài này lắm, và riêng khoản redis thì bạn có thể thêm thì càng tốt nếu như server của bạn có dư ram thì cứ cho redis vào
Tiểu Ca đã bình luận:
Trong WP Tăng Tốc
Hôm nay mình test 1 cái nữa thì giao diện ng dùng nó dính cache rất nhiều, mình thử clear cache hết r preload lại nữa vẫn bị . Đành về nginx + memcache thì thấy k còn .
Mình nghe ae đánh redis rất đáng sử dụng. Xin cám ad đã chia sẻ.
ngoc đã bình luận:
Trong WP Tăng Tốc
chào bạn. mình dùng máy chủ VMS đã kích hoạt memcache quản trị viên máy chủ nói với mình là wordpres không cần cài plugin gì cả. như vậy có đúng ko bạn. mình cảm ơn
Gia Tuấn đã bình luận:
Trong WP Tăng Tốc
thế chưa đủ