Giriş yapmadınız.

#1 24.07.2018 12:22:58

caner_dmn
Üye
Kayıtlı: 23.05.2018
Mesajlar: 60

Redis hakkında

Merhaba Arkadaşlar bu konuda sizlerden redis hakkında bilgi almak istiyorum. redis kelimisini aratarak internette birçok açıklama bulabiliyoruz. ancak çoğu ön bilgi olarak verilmiş durumda. bu yüzden redisi kullanan sizlerden bilgi almak istedim. Redis tam olarak nedir. Bizlere sunucumuzda ne gibi artıları olacaktır. sizler redisi nerede ve ne şekilde kullandığınızı benimde fikir sahibi olmama yardımcı olmak için anlatırsanız çok sevinirim. Yani örnek olarak kullandığınız yapıları ve size kazandırdıklarını şu durumda kesinlikle kullanmalısın dediğiniz noktaları öğrenmek istiyorum.

Çevrimdışı

#2 24.07.2018 13:34:51

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,641
Website

Yanıt: Redis hakkında

Uygulamanızda name isimli bir değişkende caner ifadesini tuttuğunuzu düşünün. name=caner. Bu değişkenin sürekli olmasını istiyorsunuz, yani uygulamanın bazı yerlerinde ulaşacaksınız. Yani en az bir istekten sonra erişilebilir olması gerekiyor. Bunu oturum değişkeni olarak tutabilirsiniz, fiziksel dosya olarak tutabilirsiniz ya da veritabanında tutabilirsiniz. Bu 3 işlem de diske okuma/yazma gerektiriyor. Bildiğiniz gibi diske yapılan okuma/yazma hızları bir çok faktöre göre değişiyor. Genel olarak boyut/sayı ve süre doğru orantılı, boyut/sayı arttıkça süre artıyor. Diğer başka etkenler de var elbette.

Redis burada devreye giriyor. Siz bu değeri Redis'e gönderiyorsunuz, Redis bunu bellekte tutuyor. Size bellekten getiriyor, bu da çok hızlı veriyi kaydetmeniz, veriye ulaşmanız demek. Elbette bu hızı sağlaması için kendine has özellikleri de vardır. Genel olarak bu. Daha başka özellikleri de var, araştırabilirsiniz.

Ben Laravel'de Redis'i oturum, önbellek ve kuyruk işlemleri için kullanıyorum. Yani bunların ihtiyacı olan veri, dosya sisteminde ya da veritabanında değil, direk bellekte tutuluyor.

Burada şöyle bir nokta var. Veri bellekte tutulduğu için örneğin sunucu kapanırsa veri gidecek demektir. Bu verinin anlık görüntüsünü (snapshot) alabileceğiniz, yani belli bir noktaya kadarki halini kaydedebileceğiniz save point özelliği var diye biliyorum ama hiç kullanmadım.

Çevrimdışı

#3 24.07.2018 13:45:03

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 449

Yanıt: Redis hakkında

Burada şöyle bir nokta var. Veri bellekte tutulduğu için örneğin sunucu kapanırsa veri gidecek demektir. Bu verinin anlık görüntüsünü (snapshot) alabileceğiniz, yani belli bir noktaya kadarki halini kaydedebileceğiniz save point özelliği var diye biliyorum ama hiç kullanmadım.

Redis persistence

Kaynak : https://redis.io/topics/persistence

Paylaşayım dedim sadece smile

Son düzenleyen deathisonitsway (24.07.2018 13:45:22)


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#4 24.07.2018 13:52:36

deathisonitsway
Üye
Kayıtlı: 01.02.2016
Mesajlar: 449

Yanıt: Redis hakkında

Ek olarak salvatorenin redisten nasıl faydalanırız adlı yazısını mutlaka okuyun.

http://oldblog.antirez.com/post/take-ad … stack.html


Laravel does not save you. Php knowledge only save you. Do not become a Laravel programmer, just the opposite,become php developer.

Çevrimdışı

#5 24.07.2018 13:54:00

mgsmus
Moderatör
Yer: Mersin
Kayıtlı: 17.08.2013
Mesajlar: 1,641
Website

Yanıt: Redis hakkında

Teşekkür ederim @deathisonitsway

Bu kaydetme özelliği yanlış anlaşılmasın. Amacı istem dışı veri kaybı yaşandığında veriyi kurtarmak için; bir veritabanı gibi veriyi saklamak için değil.

Çevrimdışı

#6 24.07.2018 14:29:15

alihankoc
Üye
Kayıtlı: 14.09.2017
Mesajlar: 53

Yanıt: Redis hakkında

Ben de en çok pub/sub işlemlerinde kullanıyorum. Yaptığım çoğu uygulama birden fazla dil içeriyor, özellikle nodejs ve php birlikte çok kullanıyorum. Bu iki uygulamanın birbiri ile anlık olarak haberleşmesini redis üzerinden sağlıyorum. Örneğin php de veritabanına bir kayıt eklendiğinde nodejs uygulamasının bunu bilmesini ve ona göre kendisinin başka bir işlem yapmasını istiyorum. NodeJs tarafında örneğin dbChannel gibi bir kanal açıp onu dinlemeye alıyorum (subscribe işlemi buna deniyor), Php tarafında ise db ile ilgili işlem yapıldığında bu kanala yayın gönderiyorum (publish de buna deniyor), Böylece iki uygulama birbiri ile istediği zaman haberleşebiliyor. Tam tersini yapmak da mümkün.

Redisteki monitoring özelliği de çok işime yarıyor. Pub/sub kullanmadığımız bir yerde @msgmus un kullandığı gibi anahtar-değer çiftlerini saklarken de uygulamaların bundan haberdar olmasını sağlayabiliyorsunuz. Örneğin session driver olarak redis kullanıldığında yeni bir session eklendiği zaman eğer redis i monitor ediyorsanız (takip ediyorsanız yada izliyorsanız diyelim) bu işlemler ne zaman olmuş nerede olmuş vs rapor olarak görebilirsiniz. Böylece giren çıkanı anlık takip edebilirsiniz, aktif sessionları görebilirsiniz..... Bir sürü farklı yerde kullanmak mümkün.

Çevrimdışı

Forum alt kısmı