Predis ile Redis

Standard

Selam herkese,

Geçtiğimiz günlerde Redis Nedir? Ne işe yarar? Linux sistemlerde Redis Kurulumundan bahsetmiştim sizlere. Bugünde basitce predis ile bağlanalım ve get set işlemlerini ele alalım isterseniz..

Predis kütüphanesini github üzerinden indirebilirsiniz.

Şimdi predis ile redis e bağlanma vakti:

<?php
require 'predis/autoload.php';

Predis\Autoloader::register();
try {
	$redis = new Predis\Client();

	// remote server bağlantısı
	/*
		$redis = new PredisClient(array(
		    "scheme" => "tcp",
		    "host" => "xxx.xxx.xxx.xxx",
		    "port" => 6379
		));
	*/

    $redis->set('anahtarim', 'degerim');
    $value = $redis->get('anahtarim');
}
catch (Exception $e) {
	die($e->getMessage());
}

Aslında memcache gibi kullanacaksanız ve get set edecekseniz bu kadar basit..

Şimdi de diyelim ki panelinizde tüm redis key value lerini göstereceğiniz bi arayüz yapacaksınız, bunun için tüm key ve value leri bastıralım ekrana:

//tüm redis anahtarlarını çekelim
$list = $redis->keys("*");

foreach ($list as $key)
{
	// redis anahtarının değerini çekelim
	$string = $redis->get($key);
	echo $key,':',$string,PHP_EOL;
}

Bu arada redis üzerinde key oluşturulmuş mu oluşturulmamış mı buna exists metodu ile bakabilirsiniz

echo ($redis->exists('test')) ? "Key var" : "key yok";

INCR(Increments) ve DECR(Decrements)

Daha büyük int değerler için INCRBY ve DECRBY

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

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

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

Yavaş yavaş data tipleri ve o data tipleri ile işlemler yapalım..

List

Burada liste ait methodları ve ne işe yaradıklarını comment ile yazdım

/*
 * List ile çalışma
 * LPUSH: elemanı list in başına ekler
 * RPUSH: elemanı list in sonuna ekler
 * LPOP: List in ilk elemanını çıkartır ve son halini döner
 * RPOP: listin son elemanını çıkartır ve listin son halini döner
 * LLEN: list uzunluğunu döner
 * LRANGE: listede verdiğimiz range aralığını döner
 */
$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

/*
 * Hashler genelde bire çok ilişkili alanlar için kullanılır
 * HSET: hash e key-value değer atar
 * HGET: hash deki key-value değeri okur
 * HGETALL: hash de bulunan tüm key-value değerleri okur
 * HMSET: hash de bulunan key e çoklu şekilde değer atamanızı sağlar
 * HDEL: hash de bulunan key i siler
 * HINCRBY: hash de bulunan key-value değerini arttırır
 *
 */
$key = 'Onur Canalp';
$redis->hset($key, 'age', 30);
$redis->hset($key, 'country', 'Turkey');
$redis->hset($key, 'occupation', 'Software Developer');
$redis->hset($key, 'team', 'Galatasaray');
$redis->hset($key, 'to delete', 'geçici koyduk sileceğiz bunu');

$redis->get($key, 'age'); // 30
$redis->get($key, 'country'); // Turkey

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

$redis->hincrby($key, 'age', 1); // 31

$redis->hmset($key, [
	'age' => 30,
	'country' => 'Turkey',
	'occupation' => 'Software Developer',
	'team' => 'Galatasaray',
]);

$data = $redis->hgetall($key);
print_r($data); // hash de bulunan tüm değerleri döndük ekrana basalım
/*
    [
        'age' => 30,
        'country' => 'Turkey',
        'occupation' => 'Software Developer',
        'team' => 'Galatasaray',
    ]
*/

SETS

/*
 * SETS
 * SADD: anahtarımıza değer/değerler atar
 * SREM: anahtarımızdan değer/değerler siler
 * SISMEMBER: value var mı
 * SMEMBERS: set içinde bulunan değerlerin listesini döndürür.
 */
$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']

Expiry & Persistence

$key = "1 saat sonra expire olacak";
$redis->expire($key, 3600); // 1 saat sonra expire ol
$redis->expireat($key, time() + 3600); // 1 saat sonra expire ol

sleep(600); // 600 ms geçsin.. bi alttaki örnek için

$redis->ttl($key); // kaldı 3000, yani 50 dk sonra dolacak..

$redis->persist($key); // Asla expire olmayacak

Umarım açıklayıcı olmuştur, benden bu kadar.. Artık top sizde 🙂

iyi çalışmalar herkese..

Print Friendly, PDF & Email
Facebooktwitterlinkedin

One thought on “Predis ile Redis

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir