CHIA SẺ:

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

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.

I. 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.

1. 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

2. Cài đặt Redis và PhpRedis extension

## 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

II. Kiểm tra lại quá trình cài đặt Redis

1. Check lại Redis server

redis-cli ping

Nếu kết quả về PONG là ok

2. Check lại PhpRedis extension

php -m | grep redis

Kết quả trả về redis là ok

3. 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.

4. Ứng dụng 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 trực quan ngay trên web. Tải về tại đây.

Giải nén xong, bạn đổi tên thư mục phpredmin-master thành phpredmin chẳng hạn rồi up lên server. Truy cập vào giao diện quản lý sử dụng link: http://domain.com/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)
),

Nếu bỏ bước đăng nhập, bạn hãy xóa mấy dòng trên đi là được. Trong trường hợp bạn để PHPRedMin trong thư mục private_html để truy cập qua port quản lý của HocVPS Script 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 chạy lại phân quyền webserver để PHPRedMin ghi được file log

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;
}

Cuối cùng bạn nhớ phân quyền lại Web Server với những file trong thư mục phpredmin nữa nhé.

III. 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.

32 Comments

  1. dung 8

    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)

  2. Tiến Biona 5

    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á

    1. Luân Trần Admin

      Chắc chắn rồi :D, Magento là cứ phải cài cache ko thì tốn resource lắm 😀

  3. Steve Diện 21

    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

    1. Luân Trần Admin

      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ại yum install epel-release hoặc xóa cache xem sao:
      yum clean metadata
      yum clean all

  4. Lê Dĩnh 16

    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?

  5. Triều 1

    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

    1. Luân Trần Admin

      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.

  6. Thang 3

    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 ^^

      1. Thang 3

        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?

        1. Luân Trần Admin

          Redis ~ Memcached nhưng mạnh mẽ hơn. Zend Cache không liên quan đến 2 cái kia.

  7. Quân Nguyễn 5

    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???

    1. Luân Trần Admin

      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.

  8. Hai Bac 5

    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

    1. Việt Phương Moderator

      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 crontab

Comment của bạn

Your email address will not be published. Required fields are marked *