+5

Sử dụng Redis trong Laravel

Đô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

Viblo
Let's register a Viblo Account to get more interesting posts.