Sử dụng Redis trong Laravel
Bài đăng này đã không được cập nhật trong 9 năm
Đôi nét 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.
- Redis có nhiều đặc điểm nổi bật như
- data lưu trữ trên ram với hiệu năng truy xuất cao.
- định kỳ sao lưu dữ liệu ra đĩa cứng
- hỗ trợ thêm, sửa, xóa dữ liệu đơn giản và nhanh chóng
- với nhiều đặc điểm nổi bật redis đang được ứng dụng ngày càng rộng rãi trong các các hệ thống như chat, soscial network,... những hệ thống đòi hỏi việc truy xuất nhanh và ổn định
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
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 databse 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ớ cake 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ẽ connet đến databse default.
Sử dụng cơ bản khi sử dụng redis trong laravel
Có 2 cách sử dụng redis trong laravel
- gọi trực tiếp tên method
$redis = Redis::connection();
$redis->method($key, $value);
Gọi qua method command
$redis = Redis::connection();
$redis->command($method, $parameters);
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);
}
});
All rights reserved