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