آموزش REDIS در php

Redis یکی از برترین دیتابیس های Nosql است که اطلاعات در آن بصورت Key و Value، بر روی معماری داخلی سیستم ذخیره سازی میشود . در واقع این نوع بانک اطلاعاتی برای ورود و خروج اطلاعات از sql استفاده نمی کند .

موارد استفاده از redis

Salvatore Sanfilippo سازنده redis معتقد است که این نوع دیتابیس می تواند جایگزین RDBMS می باشد ولی به نظر من این ایده مناسب نمی باشد و بهتر است از این نوع دیتابیس در موارد زیر استفاده شود .

  • Caching can be used in the same manner as memcached.
  • Leaderboards or related problems.
  • Counting stuff.
  • Real time analysis.
  • Deletion and filtering.
  • Show latest item listings in your home page.

در واقع بهتر است به عنوان عملیاتهای جانبی که نیاز است سرعت بالایی داشته باشد استفاده نماییم همانند session ها که اطلاعات ورود افراد را نگه می دارد .

نصب ردیس

جهت نصب ردیس در لینوکس از دستور زیر استفاده می کنیم :

sudo apt-get install tcl 

برای نصب در ویندوز کافی است از لینک زیر بسته نصب کننده را دانلود و نصب نمایید :

دانلود برای ویندوز 

کار با ردیس در php

به منظور استفاده ردیس در پی اچ پی کافی است که با استفاده از کد زیر لایبرری predis را در محیط کاری خود اجار نمایید :

$ git clone git://github.com/nrk/predis.git

جهت اتصال به ردیس در پی اچ پی از دستورات زیر استفاده می کنیم :


<?php
require "predis/autoload.php";
PredisAutoloader::register();

try {
	$redis = new PredisClient();

	// This connection is for a remote server
	/*
		$redis = new PredisClient(array(
		    "scheme" => "tcp",
		    "host" => "153.202.124.2",
		    "port" => 6379
		));
	*/
}
catch (Exception $e) {
	die($e->getMessage());
}

نوع های داده ای در ردیس

در ردیس نوع های داده ای مختلف وجود دارد که جهت بهره برداری سریع تر استفاده می شود در واقع شما وقتی از این داده های به موقع استفاده نمایید این سرعت ورود و خروج داده ای بالاتری خواهید داشت .

  • String: نوع دادهای متن همانند رشته ها در پی اچ پی .
  • List: همانگونه که در اسم آن پیدا می باشد همانند یک آرایه در پی اچ پی می باشد.
  • Set:همانند لیست ها و آرایه ها می باشد ولی ترتیب ندارد.
  • Sorted Set: همانند ئort می باشد ولی دارای ترتیب می باشد.
پیشنهاد پیرو برای شما :   آموزش و ارتقا به PHP7

Getter وSetter

از این دستورات جهت نوشتن و خواندن اطلاعات در در ردیس استفاده می شود

<?php
// sets message to contian "Hello world"
$redis->set(';message';, ';Hello world';);

// gets the value of message
$value = $redis->get('message');

// Hello world
print($value); 

echo ($redis->exists('message')) ? "Oui" : "please populate the message key";

increment وdecrement

از این دو دستور جهت افزایش یا کاهش یک مقدار استفاده می شود :

<?php
$redis->set("counter", 0);

$redis->incr("counter"); // 1
$redis->incr("counter"); // 2

$redis->decr("counter"); // 1

کار با لیستها در ردیس

با استفاده از متدهای زیر می توانید با لیستها در ردیس کار کنید

<?php
$redis->rpush("languages", "french"); // [french]
$redis->rpush("languages", "arabic"); // [french, arabic]

$redis->lpush("languages", "english"); // [english, french, arabic]
$redis->lpush("languages", "swedish"); // [swedish, english, french, arabic]

$redis->lpop("languages"); // [english, french, arabic]
$redis->rpop("languages"); // [english, french]

$redis->llen("languages"); // 2

$redis->lrange("languages", 0, -1); // returns all elements
$redis->lrange("languages", 0, 1); // [english, french]

کار با hash

هش ها یک سازنده ارتباط بین یک نوشته و یک مقدار می باشد مثل رابطه های چن به چند به مثال زیر توجه نمایید :

<?php
$key = ';linus torvalds';;
$redis->hset($key, ';age';, 44);
$redis->hset($key, ';country';, ';finland';);
$redis->hset($key, 'occupation', 'software engineer');
$redis->hset($key, 'reknown', 'linux kernel');
$redis->hset($key, 'to delete', 'i will be deleted');

$redis->get($key, 'age'); // 44
$redis->get($key, 'country')); // Finland

$redis->del($key, 'to delete');

$redis->hincrby($key, 'age', 20); // 64

$redis->hmset($key, [
    'age' => 44,
    'country' => 'finland',
    'occupation' => 'software engineer',
    'reknown' => 'linux kernel',
]);

// finally
$data = $redis->hgetall($key);
print_r($data); // returns all key-value that belongs to the hash
/*
    [
        'age' => 44,
        'country' => 'finland',
        'occupation' => 'software engineer',
        'reknown' => 'linux kernel',
    ]
*/

کار با set ها

ست ها در ردیس بسیار حرفه ای و پیشرفته می باشد این ست ها در مثال زیر به صورت کامل توضیح داده شده است .

<?php
$key = "countries";
$redis->sadd($key, ';china';);
$redis->sadd($key, ['england', 'france', 'germany']);
$redis->sadd($key, 'china'); // this entry is ignored

$redis->srem($key, ['england', 'china']);

$redis->sismember($key, 'england'); // false

$redis->smembers($key); // ['france', 'germany']

استفاده از ردیس به عنوان session handler

به منظور استفاده از ردیس به عنوان session handler کافی است این تنظیم را در php انجام دهید :

 session.save_handler = redis