Redis là hệ thống caching lưu trữ dữ liệu trong RAM tương tự như Memcached. Không chỉ hỗ trợ cache dạng keys/values tốt như Memcached mà Redis còn hỗ trợ nhiều cấu trúc dữ liệu khác như hash, list, set, sorted set, string.
Redis hỗ trợ đầy đủ các chức năng tương tự Memcached nhưng có thao tác lấy và nạp dữ liệu rất nhanh chóng, hơn hẳn memcached.
Trong bài viết này, mình sẽ hướng dẫn các bạn cài đặt Redis trên CentOS, đồng thời hướng dẫn cấu hình cho Redis hoạt động được trên WordPress và Magento.
1. Hướng dẫn cài đặt Redis
Để Redis có thể làm việc được với Magento, chúng ta sẽ cần cài đặt Redis server cùng với extension PhpRedis để PHP có thể kết nối được với Redis.
– Thêm repo epel, remi
## CentOS 7 ## yum install epel-release rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm ## CentOS 6 ## yum install epel-release rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
– Cài đặt Redis và PhpRedis extension
## PHP 7.1 ## yum --enablerepo=remi,remi-php71 install redis php-pecl-redis service php-fpm restart ## PHP 7.0 ## yum --enablerepo=remi,remi-php70 install redis php-pecl-redis service php-fpm restart ## PHP 5.6 ## yum --enablerepo=remi,remi-php56 install redis php-pecl-redis service php-fpm restart ## PHP 5.5 ## yum --enablerepo=remi,remi-php55 install redis php-pecl-redis service php-fpm restart
– Chạy Redis và tự động khởi động khi boot
chkconfig redis on service redis start
2. Kiểm tra lại quá trình cài đặt Redis
– Check lại Redis server
redis-cli ping
Nếu kết quả về PONG
là ok
– Check lại PhpRedis extension
php -m | grep redis
Kết quả trả về redis
là ok
– Redis shell tools
Mặc định Redis cài đặt với một công cụ comment là redis-cli
Sau khi khởi động Redis, các bạn có thể sử dụng một số command như:
- FLUSHALL – clear all databases
- SELECT # – select database under index #
- FLUSHDB – empty currently selected database
- KEYS * – list all keys from currently selected
Xem danh sách đầy đủ command ở đây.
3. PHPRedMin – Quản lý và theo dõi Redis
Sau khi cài xong, bạn có thể sử dụng PHPRedMin để quản lý Redis với giao diện web trực quan ngay. Tải về tại PHPRedMin Github.
Giải nén xong, bạn đổi tên thư mục phpredmin-master
thành phpredmin
rồi up lên server. Truy cập vào giao diện quản lý sử dụng link: domain/phpredmin/public/
Thông tin đăng nhập username/password mặc định là admin/admin
. Để chỉnh sửa bạn mở file /phpredmin/config.dist.php
lên và sửa tương ứng ở đoạn auth
'auth' => array( 'username' => 'admin', 'password' => password_hash('admin', PASSWORD_DEFAULT) ),
PHPRedMin sử dụng rewrite, nên bạn cần cấu hình lại rule thì mới hoạt động được.
– Với Apache:
Alias /phpredmin /var/www/phpredmin/public <Directory /var/www/phpredmin/> AllowOverride All <IfModule mod_authz_core.c> # Apache 2.4 <RequireAny> Require ip localhost Require local </RequireAny> </IfModule> <IfModule !mod_authz_core.c> # Apache 2.2 Order Deny,Allow Deny from All Allow from 127.0.0.1 Allow from ::1 </IfModule> </Directory>
– Với Nginx:
location /phpredmin/public/ { try_files $uri $uri/ /phpredmin/public/index.php; }
Lưu ý: Trong trường hợp bạn để PHPRedMin trong thư mục private_html
để truy cập qua HocVPS Admin(link domain:port/phpredmin/public/
) thì bắt buộc phải bỏ đăng nhập của PHPRedMin, kẻo conflict với hệ thống.
Cài đặt xong bạn phải chạy phân quyền webserver (hocvps
menu 14) để PHPRedMin ghi được file log, đồng thời restart Nginx và PHP-FPM.
4. Sử dụng Redis với WordPress và Magento
Sau khi cài đặt xong Redis và kích hoạt service, bạn chỉ cần cài đặt thêm plugin W3 Total Cache rồi kích hoạt lựa chọn Redis trong trang cấu hình là xong.
Xem full ảnh ở đây.
Với Magento, Redis hỗ trợ các phiên bản khác nhau. Trong trường hợp phiên bản Magento của bạn không hỗ trợ Redis cache hoặc session backend (hoặc cả hai), bạn có thể sử dụng extensions cài đặt thêm.
Magento CE >= 1.7.0.0 và < 1.8.0.0
- Session storage – không hỗ trợ
- Cache backend –không hỗ trợ, tên class sau khi cài đặt là Cm_Cache_Backend_Redis
Magento CE >= 1.8.0.0
- Session storage – hỗ trợ
- Cache backend –hỗ trợ, tên class sau khi cài đặt là Mage_Cache_Backend_Redis
Magento EE >= 1.13.0.0 và < 1.13.1.0
- Session storage – không hỗ trợ
- Cache backend – hỗ trợ, tên class sau khi cài đặt là Mage_Cache_Backend_Redis
Magento EE >= 1.13.1.0
Session storage – hỗ trợ
Cache backend – hỗ trợ, tên class sau khi cài đặt là Mage_Cache_Backend_Redis
Sử dụng Redis làm backend cache
Để kích hoạt Redis, bạn hãy sửa file app/etc/local.xml
, thêm đoạn sau vào vị trí tương ứng để sử dụng database 0
<config> <global> <!-- other configuration nodes --> <cache> <backend>CACHE_BACKEND_CLASS_NAME</backend> <backend_options> <server>127.0.0.1</server> <!-- or absolute path to unix socket --> <port>6379</port> <persistent></persistent> <!-- Specify a unique string like "cache-db0" to enable persistent connections. --> <database>0</database> <password></password> <force_standalone>0</force_standalone> <!-- 0 for phpredis, 1 for standalone PHP --> <connect_retries>1</connect_retries> <!-- Reduces errors due to random connection failures --> <read_timeout>10</read_timeout> <!-- Set read timeout duration --> <automatic_cleaning_factor>0</automatic_cleaning_factor> <!-- Disabled by default --> <compress_data>1</compress_data> <!-- 0-9 for compression level, recommended: 0 or 1 --> <compress_tags>1</compress_tags> <!-- 0-9 for compression level, recommended: 0 or 1 --> <compress_threshold>20480</compress_threshold> <!-- Strings below this size will not be compressed --> <compression_lib>gzip</compression_lib> <!-- Supports gzip, lzf and snappy --> </backend_options> </cache> <!-- other configuration nodes --> </global> </config>
Thay CACHE_BACKEND_CLASS_NAME bằng tên class như đã đề cập bên trên.
Sau khi kích hoạt Redis, bạn có thể xóa toàn bộ nội dung trong folder var/cache
. Để kiểm tra xem Redis có đang hoạt động thực sự hay không, hãy chạy tool redis-cli
rồi dùng lệnh sau với database 0
SELECT 0 KEYS *
Redis hoạt động rất hiệu quả, đặc biệt với những website có data lớn, chủ yếu là các query SELECT thì bạn không thể bỏ qua công cụ này được.
Mình đã cài xong và không sử dụng được, làm sao để xóa đi bây giờ ạ
Mình có vấn đề như này. Mình đã cache 1 lượng lớn data trên redis. Và nó chiếm nhiều memory của server. MÌnh đã xóa đi 2/3 lượng data đó. Nhưng mình thấy memory vẫn không giảm. Có cách nào để giải phóng memory đi không ạ.
search cmd clear memory inactive nhé bạn.
Mình cài xong rồi mà WP TOTAL CACHE nó báo 🙁 Redis extension: Not installed
Bạn ơi chỉ giúp mình kết nối redis với web cùng codeigniter
Cám ơn bạn
—–
$config[‘socket_type’] = ‘tcp’; //`tcp` or `unix`
$config[‘socket’] = ‘/var/run/redis.sock’; // in case of `unix` socket type
$config[‘host’] = ‘127.0.0.1’;
$config[‘password’] = NULL;
$config[‘port’] = 6379;
$config[‘timeout’] = 0;
—
Trên mạng hướng dẫn là thêm đoạn trên vào application / config
không biết thế đã ok chưa?
Cám ơn bạn,
Bên file nginx domain vầy đúng chưa bác, ko có cách nào test xem nó chạy hay chưa à bác 🙁
server {
listen 80;
location /phpredmin/public/ {
try_files $uri $uri/ /phpredmin/public/index.php;
}
}
Xin bác luận giúp đỡ,mình cài xong hết rồi,tới đoạn Sử dụng Redis làm backend cache và sửa file,xóa cache var/cache thì bị website bị nối không kết nối được với sever.Đã làm mọi cách mà không khắc phục đươc.Bạn cho hỏi nguyên nhân là do mình thêm thêm đoạn code trên vào vị trí tương ứng sai hay lỗi nào ạ
Cái này bạn phải debug, checklog các service mới biết được nguyên nhân cụ thể chứ thế này chung chung quá
Kiểm tra các service như nginx, php-fpm
ko sài nữa lệnh xóa Redis sao Ad, tks
Dear bạn.
Mình cài như trên, nhưng đến đoạn “yum –enablerepo=remi,remi-php56 install redis php-pecl-redis
service php-fpm restart” nó báo :”No package php-pecl-redis available.”
xử lý thế nào bạn nhỉ?
Chỗ ý là 2 dòng lệnh nhé bạn
Bạn dùng PHP gì? bạn đã cài EPEL chưa?
Mình làm theo trình tự của bạn. nó báo thế này bạn ơi:
Package redis-4.0.10-1.el6.remi.x86_64 already installed and latest version
No package php-pecl-redis available.
Nothing to do
[root@khachang140 ~]# service php-fpm restart
php-fpm: unrecognized service
Redis cài thành công rồi đó. Còn câu lệnh restart php-fpm kia không có tác dụng vì hệ thống bạn dùng thứ khác, có thể không phải php-fpm
Bạn xem restart PHP để Redis hoạt động nhé
vps mình dung apache. Mình restart hết rồi nhưng vẫn ko được.
đoạn check cuối cùng nó không ra redis
[root@khachang140 ~]# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@khachang140 ~]# chkconfig redis on
[root@khachang140 ~]# service redis start
[root@khachang140 ~]# redis-cli ping
PONG
[root@khachang140 ~]# php -m | grep redis
[root@khachang140 ~]#
Bạn dùng PHP bản gì?
E có đọc bài này https://hocvps.com/huong-dan-config-vps-chiu-tai-lon-voi-hocvps-script/ thì không thấy nói gì đến cài Redis. Vậy cho e hỏi là nên dùng Redis hay Memcached. Có nên cài cùng lúc cả Redis và Memcached không. Giải pháp nào là tối ưu nhất vậy. Thanks
Bạn theo bài viết là ok nhé. Không dùng cùng lúc Redis và Memcached
Để gỡ bỏ thì làm sao ad.
cảm ơn
Bạn ngừng redis rồi remove với package tương ứng bạn đã cài
Ví dụ
yum remove redis php-pecl-redis -y
Dùng cái này với wp-rocket có tác dụng gì ko nhỉ? Redis nếu ko có plugin thì tác dụng gì cho website wordpress ko ?
Bạn dùng với W3 Total Cache nhé. Nếu Rocket thì bạn cần cấu hình sâu, hình như nhà phát triển đang tích hợp dần, mình cũng k rõ
https://hocvps.com/cai-dat-redis-tren-centos/#4._Sử_dụng_Redis_với WordPress_và_Magento
Không Plugin thì redis vẫn cache những thành phần nó quy định thôi, chỉ là với plugin thì nó sẽ tối ưu hơn, biết cần cache ở đâu…
Xin lỗi cho em hỏi, em chạy lệnh: redis-cli ping nó trả về PONG rồi
Nhưng lệnh này: php -m | grep redis nó ko trả về redis. Em phải làm sao ?
Tức bạn mới cài thành công Redis nhưng chưa cài thành công PhpRedis extension. Bạn kiểm tra và cài đặt lại nhé
Anh Việt Phương, Em cài như hướng dẫn VPS PAvietnam ! họ còn chặn cả wget ấy
Hay là bị họ chặn rồi anh nhỉ !
Nếu không anh hướng dẫn em khắc phục được không, em rebuil 3 lần rồi: 2 lần centos 7 & 1 lần centos 6
1. Trong bài hướng dẫn có sử dụng
wget
đâu bạn2. Bạn post full lệnh và các thông báo trả về khi bạn cài đặt. Post vào http://pastebin.com/ cho gọn
Sử dụng Redis với code web php thông thường thì cấu hình như thế nào mình chưa rõ. Mình chưa dùng Redis bao giờ, bài trên nói Redis với WordPress và Magento thôi.
Bạn có thể thiết lập Redis làm Session Handler cho PHP nhé. Cấu hình PHP sửa/thêm thông số
session.save_handler = redis
khong biet vps vesta mình cài có lổi gì mà post link nó không load được , làm hoài mà chẳng biết tại nguyên nhân gì
https://www.onelive.me
Mình không hiểu ý của bạn
Mình hiện đang có
Redis Object Cache
Nginx Helper
WP Rocket
Có kết hợp cả 3 được ko ạ 😀
Mình không rõ rồi. Bạn tự tham khảo nhé
phần này kết hợp với wp rocket kiểu gì vậy ạ
Hình như WP Rocket không có lựa chọn tích hợp bạn à. Cụ thể kĩ thuật tích hợp của WP Rocket mình không rõ
Mong bạn nghiên cứu dùm anh em luôn
app/etc/local.xml. Cái file local.xml này trong Magento 2.1 hem có anh ơi ??
Redis cho Magento2 thì mình chưa rõ rồi. Bạn tự tìm hiểu thêm nhé
mình cài xong, thì bị lỗi kết nối đến cơ sở dữ liệu.đã restart hết rồi
Redis có cài đặt cấu hình gì liên quan đến MySQL đâu mà lỗi CSDL. Bạn gặp thông báo ở đâu?
khi mình cài xong thì lập tức bị lỗi không thể kết nối đến dữ liệu, cũng không biết tại sao. bạn xem qua dùm mình. mình gửi thông tin qua mail rồi ạ
mình copy vào private khi chạy báo như thế này thì sửa sao vậy bạn
Warning: include_once(../libraries/redis.php): failed to open stream: No such file or directory in /home/onmyoji_guide/private_html/redis/public/index.php on line 17
Warning: include_once(): Failed opening ‘../libraries/redis.php’ for inclusion (include_path=’.:/usr/share/pear:/usr/share/php’) in /home/onmyoji_guide/private_html/redis/public/index.php on line 17
Fatal error: Class ‘Redis’ not found in /home/onmyoji_guide/private_html/redis/libraries/drivers/db/redis.php on line 2
Không rõ bạn đã chỉnh sửa trong Nginx phần rewrite như đã bảo chưa? Cũng như đã chạy Phân Quyền Webserver chưa
Bạn restart lại php-fpm xem được không?
mình thử restart lại vẫn ko dc, vẫn lỗi báo thiếu file redis.php
Theo Luân nên xài redis hay memcache. mình xài joomla. xài memcache lúc đầu nhanh. nhưng sau này web lỗi. đành cài lại vps mới chạy ổn dc
Các anh ơi, cho em hỏi là em cài redis rồi, kết nối redis rồi, nhưng khi vào w3 total cache để chỉnh từ Disk sang redis mà nó ko cho chọn ạ, nó chỉ cho chọn mỗi Disk. Mong các anh giúp đỡ chỉ giáo?
Kết quả
php -m | grep redis
của bạn là gìnó ra chữ này anh ạ “redis”
ko biết có phải lỗi hay do em dùng w3 total cache bản Free nên nó ko cho em chọn mục redis ko Pro?
Vậy tức bạn đã cài đặt PHPRedis extension. Kì lạ nhỉ. Bạn kiểm tra lại các bước cài đặt đồng thời restart nginx, php-fpm service xem
Mình cũng bị y chang
Bạn cài đặt đủ PHP Redis chưa? Để chắc ăn bạn chạy lại cài đặt đầy đủ từ đầu rồi restart các services lại xem
Nếu đã cài Memcached trước đó rồi thì nên cấu hình trong W3 Total Cache như thế nào để tối ưu bạn
Bạn set page cache method của W3 Total Cache là Memcached nhé. Bạn tham khảo cả bài tối ưu này: https://hocvps.com/huong-dan-config-vps-chiu-tai-lon-voi-hocvps-script/
ok cảm ơn bạn
Bạn Luân cho mình hỏi chút. Trước đây m dùng vpssim thường tích hợp sẵn cài mấy chương trình tạo cache nhưng vì có cái web kết quả đến giờ get kết quả nó cache lâu ko hiện ngay nên thử tìm cài hocvps. Hiện mình chưa cài ex cache nào ngoài việc sử dụng plugin wp super cache.
Bạn cho mình hỏi trên hocvpss được tích hợp sẵn module cache nào chưa? Với trường hợp web như của mình thì nên dùng loại nào? để tới giờ get kết quả hiển thị thì xoá cache hay ko bị cache vào giờ nhất định?
Thanks1
HocVPS chưa tích hợp sẵn module cache nào đâu bạn. Trường hợp bạn có thể xóa cache vào giờ định sẵn bằng crontab
Ví dụ 18h giờ hàng ngày chạy
# redis-cli FLUSHALL
thì add vào crontabdùng varnish rồi thì có dùng thêm được cái này không admin ơi
Thoải mái nha bạn, 2 cái này cache khác nhau
cho em hoi minh muon lam 1 VPS rieng cho minh phai lam sao the anh chi cho em duoc khong
Bạn đăng kí VPS qua các nhà cung cấp, ví dụ Vultr, DO, Linode,..Chi tiết các nhà cung cấp và plan đi kèm bạn có thể tham khảo ở https://canhme.com/server/
Luân ơi mình cài redis vào ok rồi, cài plugin vào 1 site cũng chạy ngon. đến khi cài thêm vào plugin redis vào site khác thì bị lỗi là 2 thằng kết nối đến chung 1 database???
Vụ này khó rồi, mình chưa gặp tình trạng này. Bạn search thêm trên mạng vậy.
Cài rồi làm sao gỡ Cái Redis này ra bác Luân nhỉ? tại mình xài vpssim có cài sẵn rồi mà không thấy chỗ disable trong phần quản lýcảm ơn ^^
yum remove redis php-pecl-redis
nhéCảm ơn bạn đã hỗ trợ, nhân tiện mình hỏi mình Đã xài zend opcache + memcache thì khỏi cần Redis nũa nhi? chức năng nó giông nhau không a?
Redis ~ Memcached nhưng mạnh mẽ hơn. Zend Cache không liên quan đến 2 cái kia.
Tích hợp vào học vps đi bác a e cài cho dễ.
Không phải ai cũng cần dùng Redis, tích hợp vào cho nó nặng ra 😀
Mình bao nhiêu site cũng ko dùng thằng này.
Tại sao thế anh? Anh vẫn dùng memcache ạ?
Em thấy bài đánh giá Redis cao hơn tại sao anh không dùng thế anh
Mình cài memcached rồi có lên cài Redis nữa không Luân?
Thử xem sao bạn 😀
app/etc/local.xml không có file này a ơi
Luân cho mình hỏi có cách nào config Redis cache Query strings (GET parameters) để cache mấy bộ lọc không nhỉ! Vì theo quan sát thì hình như Redis khôgn cache mấy kết quả như domain.com/page?orderby=comment_count
Hi, vụ này mình chịu rồi, chưa có dịp dùng redis.
Nếu mình đã dùng redis thì có cần cái các plugin như W3 Total Cache, WP Super Cache, . . . không?
Vì tìm hiểu thì nó kỵ với W3 Total Cache và Pagespeed mà không biết nó có dùng chung được với WP Super Cache và có cần thiết ko?
Thank anh!
Không biết về mấy cái này. Làm theo hướng dẫn như thế mà không biết lỗi chỗ nào anh chỉ dùm được không.
https://drive.google.com/file/d/0B4SwEbZriXPfeTFacVgzdUtoRDA/view?usp=sharing
Cái này do lỗi epel repo, bạn thử xóa đi với lệnh:
yum remove epel-release
rồi cài lạiyum install epel-release
hoặc xóa cache xem sao:yum clean metadata
yum clean all
Luân ơi, bạn gì trên đầu cmt cài đủ các loại cache thế có vô lý quá không, mình cài redis cache rồi thì sao dùng được memcached nữa nhỉ, và mình để ý từ khi cài redis cache backend hình như cái cache của magento không chạy nữa vào thư mục var/cache trống
Đúng rồi, ko cần cài đặt nhiều thế làm gì cả.
Không biết cài cache này có cải thiện được server response time của mình không nhỉ?
Mình dùng centos + memcached + zend opcache. shop magento của mình mới chỉ hơn 100 sản phẩm mà TTFB lên hơn 2s làm giảm tốc độ load trang quá
Chắc chắn rồi :D, Magento là cứ phải cài cache ko thì tốn resource lắm 😀
Luân viết thêm bài cho Unbuntu đi, mình đang dùng unbuntu
Okie, có thêm thời gian mình sẽ nghiên cứu bổ sung sau
kinh nghiệm chạy magento của mình là phải nhiều cache
zend opcache (cache php)+ memcache (save session) + redis (cache backend) + varnish (frontend) + full page cache (extension)
Không biết bạn chạy webserver gì để cài những cache trên vậy?
có chém gió không bro ?…chạy nhiều cache vậy là thông minh ? T sử dụng chỉ có Redis + memcache là quá đủ rồi, hệ thống web bro chạy cơ chế gì, topology thế nào vậy