Redis ile veri cachelenmesi | Symfony
Alperen kr
Posted on February 13, 2022
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 .
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.
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
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.
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_redis
poolunu kullanacağız.
Veritabanında post tablomuz olduğunu ve içindeki veriler cacheleyeceğimizi varsayalaım.
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.
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/_profiler
de tutuyor . öncelikle bastırdığımız dd
'yi kaldıralım ve sayfayı yenileyelim .
Görseldeki gibi sizde de olan menüden cache ile ilgili olana tıklayalım.
Bütün pool'lar burda ve bizim verilerimiz cache.my_redis
pool' unda tutuluyor. Arka taraftada bu işlemi doğruladık.
Teşekkürler -_-
Posted on February 13, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.
Related
November 30, 2024