logo-redis

Giới thiệu về Redis

  • Redis là hệ thống hỗ trợ caching data trên RAM
  • Redis cho phép lưu trữ dữ liệu dưới dạng key/value.
  • Redis hỗ trợ rất nhiều cấu trúc cơ sở dữ liệu cơ bản với:
  • key: kiểu string
  • value có thể là : Strings, Lists, Sets, Sortedsets(zsets), Hashes.
so-sanh-no-cache

Tại sao nên sử dụng Redis:

  • Tăng tốc độ ứng dụng:
    • Caching dữ liệu: Lưu trữ những dữ liệu được truy vấn thường xuyên vào Redis để giảm thiểu các truy vấn đến cơ sở dữ liệu, từ đó tăng tốc độ phản hồi của ứng dụng.
    • Session storage: Lưu trữ session của người dùng trong Redis thay vì trong file hoặc cơ sở dữ liệu, giúp tăng khả năng mở rộng và giảm tải cho server.
  • Mở rộng quy mô: Redis có khả năng xử lý lượng lớn dữ liệu và kết nối đồng thời, giúp ứng dụng của bạn có thể phục vụ nhiều người dùng hơn.
  • Các tính năng khác:
    • Message queue: Sử dụng Redis để tạo các hàng đợi thông tin, giúp xử lý các tác vụ nền một cách hiệu quả.
    • Rate limiting: Hạn chế số lượng yêu cầu trong một khoảng thời gian nhất định để bảo vệ ứng dụng khỏi các cuộc tấn công DDoS.
    • Data structures: Redis hỗ trợ nhiều loại cấu trúc dữ liệu như lists, sets, sorted sets, hashes, giúp bạn linh hoạt trong việc lưu trữ và quản lý dữ liệu.
giai-thich-redis

Các trường hợp sử dụng phổ biến:

  • Caching dữ liệu tĩnh:
    • Các menu, sidebar, footer không thay đổi thường xuyên.
    • Kết quả của các truy vấn phức tạp đến cơ sở dữ liệu.
  • Caching dữ liệu động:
    • Dữ liệu người dùng đã đăng nhập (ví dụ: thông tin tài khoản, giỏ hàng).
    • Kết quả của các tính toán hoặc xử lý dữ liệu.
  • Session storage:
    • Lưu trữ thông tin phiên làm việc của người dùng.
  • Message queue:
    • Xử lý các tác vụ nền như gửi email, tạo báo cáo.
  • Rate limiting:
    • Hạn chế số lượng đăng nhập thất bại, số lượng bình luận trong một khoảng thời gian nhất định.
cache-tieu-bieu

Cách sử dụng Redis trong Laravel:

1. Cài đặt trong Redis

Ubuntu

sudo apt-add-repository

ppa:chris-lea/redis-server

sudo apt-get update

sudo apt-get install redis-server

Window

tải file exe và cài đặt

https://github.com/rgl/redis/downloads

Mac

curl -O http://download.redis.io/redis-stable.tar.gz
tar -xvzf redis-stable.tar.gz
rm redis-stable.tar.gz
cd redis-stable
make
sudo make install

2. Cấu hình redis trong Laravel

cấu hình kết nối đến redis serve trong file app/config/(local)/database.php bạn có thể cấu hình nhiều database tùy theo nhu cầu sử dụng

    'redis' => [

        'cluster' => false,
        'default' => [
            'host' => '127.0.0.1',
            'port' => 6379,
            'database' => 0,
        ],
        'data1' => [
            'host' => '',
            'port' => ,
            'database' => ,
        ],
        'dataX' => [
            'host' => '',
            'port' => ,
            'database' => ,
        ],

    ],

Redis cũng có thể dùng làm trình điều khiển bộ nhớ cache trong laravel

config: app/config/cache.php

 'driver' => 'redis',

trước khi sử dụng bạn cần phải gọi phương thức

$redis = Redis::connection($namedata);

default :

$redis = Redis::connection();

khi đó sẽ connect đến database default.

redis-laravel

3. Sử dụng cơ bản khi sử dụng redis trong laravel

– Thiết lập dữ liệu cho key set

$value = json_encode([1,2,3]);
$redis = Redis::connection();
$redis->set('foo', 'bar');
$redis->set('foo1', $value);
$redis->set('foo2', 2);
$name = $redis->get('foo');
echo $name;

kết quả hiển thị

string(3) "bar"

– Get giá trị của key get

$foo = $redis->get('foo');
$foo1 = $redis->get('foo1');
echo $foo;
echo $foo1;

kết quả hiển thị

string(3) "bar"
string(5) "[1,3]"

– Tăng giá trị của key lên 1 với dữ liệu của key là integer incr

$redis->incr('foo2');
$foo2 = $redis->get('foo2');
echo $foo2;

kết quả hiển thị

string(1) "3"

– Giảm giá trị của key lên 1 với dữ liệu của key là integer decr

$redis->decr('foo2');
foo2 = $redis->get('foo2');
echo foo2;

kết quả hiển thị

string(1) "2"

– Xóa key del

$redis->del('foo2');
foo2 = $redis->get('foo2');
echo foo2;

kết quả hiển thị

NULL

– Thêm vào bên phải danh sách rpush

$redis->rpush('mylist', 'hello');
$redis->rpush('mylist', 'hello1');
mylist = $redis->lrange('mylist', 0, 1);
echo mylist;

kết quả hiển thị

array(2) { [0]=> string(5) "hello" [1]=> string(6) "hello1" }

– Thêm vào bên trái danh sách lpush

$redis->lpush('mylist', 'hello-1');

khi cần gửi nhiều lệnh lên server có thể sử dụng lệnh pipeline

Redis::pipeline(function($pipe)
{
    for ($i = 0; $i < 1000; $i++)
    {
        $pipe->set("key:$i", $i);
    }
});

Kết luận

Redis là một công cụ mạnh mẽ để tăng tốc độ và khả năng mở rộng của các ứng dụng . Bằng cách tận dụng các tính năng của Redis, bạn có thể xây dựng các ứng dụng web hiệu suất cao và đáp ứng được nhu cầu của người dùng.

Tham khảo

https://www.geeksforgeeks.org/redis-cache

https://chiase4dev.com/caching/tim-hieu-ve-cache-va-cach-thuc-hoat-dong-cua-no.html

Leave a Reply

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