DEV Community

Alperen kr
Alperen kr

Posted on

Redis ile veri cachelenmesi | Symfony

Selamlar ben Alperen,
Bu yazıda sizlere Redis'in ne işe yaradığını ve nasıl kullanıldığını bahsedeceğim.

Bunu yaparken sırası ile Redis nedir ? , nasıl kurulur , Symfony redis config ve son olarak Redis ile veri cachelenmesini anlatarak sunumu tamamlayacağım .

Redis nedir ?

REmote DIctionary Server
Redis bir veri yapısı sunucusudur. Açık kaynak, bellek kullanımlı, anahtar-değer deposudur. Redis "Uzak Sözlük Sunucusu" anlamına gelmektedir. Çeşitli kaynaklara göre en çok kullanılan anahtar-değer veritabanıdır.
Daha fazla bilgi için bu kaynaktan yararlanabilirsiniz .

Redis nasıl kurulur ? (Ubuntu)

sudo apt install redis-server
Terminalde bu komutu çalıştırdıktan sonra localimizde redis-server'i kurmuş olacağız. Redis'in çalışması için config ayarlarımızı tamamlamamız gerekiyor .
sudo nano /etc/redis/redis.conf
supervised kısmı default olarak no geliyor görseldeki gibi değiştirelim .
Image description
bu düzenlemeden sonra redis server'ımızı tekrar başlatalım.

sudo systemctl restart redis.service

sudo systemctl status redis

Sizde de görseldeki bir görüntü varsa kurulum başarılı demektir.

Symfony Redis Config

Symfony'nin işimizi kolaylaştırmak için bir paketi bulunmakta , onu kurarak başlayalım .
composer req symfony-bundles/redis-bundle

cache.yaml dosyamıza girelim.

Image description

Görselde gördüğümüz pools verilerimizin tutulacağı kısım cache.my_redis ise poolumuzun adı oluyor .
Biraz önce kurmuş olduğumuz redis-bundle'ın bize sağlamış olduğu cache.adapter.redis 'i adapter kısmına yazalım redis ile verilerimiz arasında köprü görevi görüyor.

Provider redis ile bağlantımızı sağlıyor . Peki app.my_custom_redis_provider ne anlama geliyor ?
aslında orada bir servis adı belirtiyoruz.

cache.yaml dosyamızın alt kısmına

Image description
Görseldeki gibi bir servis oluşturuyoruz. Bu servis
poolumuzun hangi portta olduğunu ve createConnection ile yanındaki Redis adapter componentiçağrıldığında çalışacağını belirtiyoruz.

Verilerimizi Cacheleyelim

Verilerimizi cachelemek için Controllerımıza poolumuzu dahil edelim ama önce hangi pool nasıl çağırılır bunu öğrenelim.

php bin/console debug:autowiring cache
komutunu terminale yazalım.

Image description

Görselde gördündüğü gibi parantez içinde olanlar pool adları yanlarındaki ise nasıl kullanacağımızı belirten parametreler
Biz burda cache.my_redispoolunu kullanacağız.

Veritabanında post tablomuz olduğunu ve içindeki veriler cacheleyeceğimizi varsayalaım.

Image description

Görsel'i açıklamak gerekirse ;

Poolumuza 'key' adlı bir key oluştur ve bu keyin value'si yani değerini $postRepository de findby koşullarını sağlayan verileri $post yap ve return et . Son olarak dd ile $cacheItem'ı bastır. Çıktı şu şekilde olacaktır.

Image description

Sitemizin ön tarafında cache işlemi gerçekleşti . Peki bunu arka tarafta nasıl kontrol edebiliriz ?

Symfony bizim için bunları localhost:8000/_profilerde tutuyor . öncelikle bastırdığımız dd'yi kaldıralım ve sayfayı yenileyelim .

Image description

Görseldeki gibi sizde de olan menüden cache ile ilgili olana tıklayalım.

Image description

Bütün pool'lar burda ve bizim verilerimiz cache.my_redispool' unda tutuluyor. Arka taraftada bu işlemi doğruladık.

Teşekkürler -_-

Latest comments (0)