PHP Redis Form Veri Depolama ve Alma İşlemi

 PHP Redis Form Veri Depolama ve Alma İşlemi


Redis: GET, SET

<?php
try{
$redis = new Redis();
$redis->connect('redis', 6379);
$redis->auth('mypassword');

if(isset($_POST['name'])){
$redis->set('name', $_POST['name']);
}
}
catch (Exception $e){
echo $e->getMessage();
}
?>
<html>
<head></head>
<body>
<strong>Basit Form</strong>
<br>
<form action="php_form_redis.php" method="post">
<input type="text" name="name">
<input type="submit" value="Kaydet">
</form>
<br>
<?php
echo 'redis database okunan değer:'. $redis->get('name');
?>
</body>
</html>

PHP Redis Son Kullanma Tarihi ve Kalıcılığı Yönetme

 PHP Redis Son Kullanma Tarihi ve Kalıcılığı Yönetme


Redis: EXPIRE, EXPIREAT, TTL, PERSIST

<?php
try{
$redis = new Redis();
$redis->connect('redis', 6379);
$redis->auth('mypassword');

$key = "expire in 1 hour";
$redis->set($key, "test value");

$redis->expire($key, 3600); //silinme zamanı 1 saat olarak ayarlanır.

$redis->expireat($key, 1723043722); //silinme zamanı Unix Timestamp olarak ayarlanır.

print_r($redis->ttl($key)); //saniye cinsinden expire olmak için kalan süresini gösterir.

$redis->persist($key); //expire date üstündeki zamanı kaldırır ve kalıcı olarak key silinmeden durur.
}
catch (Exception $e){
echo $e->getMessage();
}
?>

PHP Redis Sıralı Küme "Array" Komutları

  PHP Redis Sıralı Küme "Array" KomutlarıSıralı Veri Yapıları için Güçlü İşlemler



Redis: ZADD, ZCARD, ZCOUNT, ZREM, ZRANGE, ZRANK, ZREVRANK, ZSCORE, ZRANGEBYSCORE

<?php
try{
$redis = new Redis();
$redis->connect('redis', 6379);
$redis->auth('mypassword');

$key = "Languages12";
// zadd :sıralanmış bir kümeye bir veya birden fazla puan ekleyerek günceller.
$redis->zadd("sorted_set:{$key}",1,"PHP");
$redis->zadd("sorted_set:{$key}",2,"C#");
$redis->zadd("sorted_set:{$key}",3,"JAVA");

print_r($redis->zcard("sorted_set:{$key}")); //3 toplam kümede kaç eleman sayısını verir
echo "<br>";

print_r($redis->zcount("sorted_set:{$key}",1,2)); //2 toplam kaç küme index i var 0,1,2
echo "<br>";

$redis->zrem("sorted_set:Languages","JAVA");// belirtilen küme elmanıı kümeden kaldırır.
echo "<br>";

print_r($redis->zrange("sorted_set:{$key}",0,-1,"withscores"));//küme içindeki index ve değerleri gösterir.
echo "<br>";

print_r($redis->zrank("sorted_set:{$key}","C#")); //1 değerin kaçıncı indexe geldiğini söyler.
echo "<br>";
print_r($redis->zrange("sorted_set:{$key}",0,-1,"withscores")); // Puana göre artan şekilde sıralar.

print_r($redis->zrevrank("sorted_set:{$key}","C#")); //0 [0 based index] Bir oyuncunun puanı büyükten küçükten doğru sıralanınca rank değerini döndürür.
echo "<br>";

print_r($redis->zscore("sorted_set:{$key}","C#")); //2 Belirli bir oyuncunun puanını döndürür
echo "<br>";

print_r($redis->zrangebyscore("sorted_set:{$key}",1,2, array("withscores"=>true)));
}
catch (Exception $e){
echo $e->getMessage();
}
?>

PHP Redis Kümelerle "Array" Çalışma

 PHP  Redis Kümelerle "Array" Çalışma, Verimli Veri İşleme ve Küme İşlemleri



Redis: SADD, SADDARRAY, SMEMBERS, SREM, SISMEMBER, SISMEMBERS

<?php
try{
$redis = new Redis();
$redis->connect('redis', 6379);
$redis->auth('mypassword');

$key = "Languages12";

$redis->sadd($key,'PHP');//atama işlemi
$redis->sAddArray($key,['C#','Ruby','Java']);
$redis->sadd($key,'PHP');// aynı değerden var ise bunu tekrar eklemicektir.
print_r($redis->smembers($key)); // Array ( [0] => Java [1] => PHP [2] => Array [3] => C#2 [4] => C# [5] => Ruby )
echo "<br>";

$redis->srem($key,'C#');// bir değeri kaldırmak için kullanılır
print_r($redis->smembers($key)); // Array ( [0] => Java [1] => PHP [2] => Ruby )
echo "<br>";

var_dump($redis->sismember($key,'C#')); // false
echo "<br>";

print_r($redis->smembers($key)); // Array ( [0] => Java [1] => PHP [2] => Ruby )
echo "<br>";
}
catch (Exception $e){
echo $e->getMessage();
}
?>

PHP Redis Hash Komutları

 PHP Redis Hash Komutları


Redis: HSET, HINCRBY, HMSET, HGETALL 

<?php
try{
$redis = new Redis();
$redis->connect('redis', 6379);
$redis->auth('mypassword');

$key = "Ali Veli";

$redis->hSet($key,'age',35);//hash key'ine, key value ata
$redis->hSet($key,'country','Turkey');
$redis->hSet($key,'occupation','Software Engineer');
$redis->hSet($key,'deleted',0);

echo $redis->hget($key,'age'); //35
echo "<br>";

echo $redis->hget($key,'country'); //Turkey
echo "<br>";

$redis->del($key,'deleted'); //deleted olan key siler.

$redis->hincrBy($key,'age',10); //45 //integer değeri 10 arttır

//toplu atama
$redis->hmset($key,[
'age' => 35,
'country' => 'Turkey',
'occupation' => 'Software Engineer',
]);

$data = $redis->hGetAll($key);
print_r($data);
}
catch (Exception $e){
echo $e->getMessage();
}
?>

PHP Redis Listeleri Düzenleme

 PHP Redis Listeleri Düzenleme, Verimli Veri İşleme


Redis: DEL, RPUSH, LPUSH, LPOP, RPOP,LLEN, LRANGE

<?php
try{
$redis = new Redis();
$redis->connect('redis');
$redis->auth('mypassword');
$redis->incr("counter");
echo "counter :".$redis->get("counter")."<br>";
#if(fmod($redis->get("counter"),5) == 0){// eğer counter 5 tam bölünür ise languages sıfırla "sil"
$redis->del("languages");
# $redis->set("counter",0);
#}

$redis->rpush("languages","c#"); //[c#] listenin sağına "sonuna" olarak değer ekler
$redis->rpush("languages","PHP"); //[c#, PHP]

$redis->lpush("languages","Python"); //[Python, c#, PHP] listenin soluna "başına" olarak değer ekler
$redis->lpush("languages","Java"); //[Java, Python, c#, PHP]

echo $redis->lpop("languages"); // [Python, c#, PHP] listenin soluna "başında" olan değeri siler ve silinen değeri döner.
echo "<br>";

echo $redis->rpop("languages"); // [Python, c#] listenin sağına "sonuna" olan değeri siler ve silinen değeri döner.
echo "<br>";

echo $redis->llen("languages"); //2 listemizin içindeki değerlerin toplamını verir
echo "<br>";

print_r($redis->lrange("languages",0,-1));// tüm değerleri gösterir.
echo "<br>";

print_r($redis->lrange("languages",0,0));// ilk değeri gösterir
echo "<br>";
}
catch (Exception $e){
echo $e->getMessage();
}
?>

PHP Redis Artırma ve Azaltma

 PHP Redis Artırma ve Azaltma Komutları: Sayısal Değerleri Verimli Şekilde İşleme



Redis: COUNTER, INCR, DECR, INCRBY, DECRBY

<?php
try{
$redis = new Redis();
$redis->connect('redis');
$redis->auth('mypassword');

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

$redis->incr("counter");//1 incr artırma komutu
$counter = $redis->get("counter");
echo "counter value: ".$counter."<br>";

$redis->incr("counter");//2 incr artırma komutu
$counter = $redis->get("counter");
echo "counter value: ".$counter."<br>";

$redis->decr("counter");//1 decr azaltma komutu
$counter = $redis->get("counter");
echo "counter value: ".$counter."<br>";

$redis->incrby("counter",15);//16 incrby artırmak istedğimiz değer kadar artırır komutu
$counter = $redis->get("counter");
echo "counter value: ".$counter."<br>";

$redis->incrby("counter",5);//21 incrby artırmak istedğimiz değer kadar artırır komutu
$counter = $redis->get("counter");
echo "counter value: ".$counter."<br>";

$redis->decrby("counter",10);//11 decrby azaltmak istedğimiz değeri kadar azaltır komutu
$counter = $redis->get("counter");
echo "counter value: ".$counter."<br>";
}
catch (Exception $e){
echo $e->getMessage();
}
?>

PHP Redis Veri Deploma, Veri Doğrulama

 PHP Redis Veri Deploma, Veri Doğrulama


Redis: SET, GET, EXISTS

<?php
try{
$redis = new Redis();
$redis->connect('redis', 6379);
$redis->auth('mypassword');

$redis->set("user_name", "ali_veli"); //atama işlemi

if($redis->exists('user_name')){ //böyle bir değer varmı
echo "get key user_name to value :" .$redis->get("user_name"); //getir
}
}
catch (Exception $e){
echo $e->getMessage();
}
?>

Docker PHP Redis


Docker PHP Redis Mysql Apache


 Docker üzerine Php ve Redis container tanımlamalarını yapıyoruz "docker-compose.yml"
 
 Projeyi github üzerinden indirip aşağıdaki kodu yazarak çalıştırabilirsiniz. Github Link

>    docker-compose up -d

docker-compose.yaml dosya içeriği:
    
container_name: webserver 
    burada dockerfile dosyamız içerisinde php:8.2.0-apache sürümünü çağrıyoruz ve php için         gerekli extension ları indiriyoruz.

- image: mysql:8.0 
    ilgili veritabanı sürümünü şifre ve port ayarlarını tanımlıyoruz.

- image: phpmyadmin/phpmyadmin 
    Veritabanı arayüz erişimi için phpmyadmin tanımlayıp mysql ayarlarını yapaıyoruz.

dockerfile: ./redis/Dockerfile
    Redis ile port şifre ayarlarını yapıyoruz.

Tüm containerları aynı ağda "bridge" ekliyoruz.