• 13-05-2018, 23:25:38
    #1
    Merhabalar ;

    bilmediğimden sizlere bir soru sormak istiyorum.Redis redis diye çok duydum nosql veritabanı ve laravel ile hazır entegrasyonu var fakat bu redis nasıl kullanılıyor ? redis kullanırsak mysqli kullanmyacakmıyız ? redis zaten ilişkisel veritabanı değil eğer mysql kullanmıyorsak join işlemlerini nasıl yapacağız yada ilişkisel olmayan yerlede mi redis kullanacağız ? benim sitemin 20 kolonlu bir veritabanı 600 satır veri aldıktan sonra kasmaya başlayınca başka bir çözüme odaklanmak istedim o yüzden sizlere soruyorum
  • 13-05-2018, 23:43:45
    #2
    en basit mantıkla redis key-value şeklinde tasarlanmış bir nosql veritabanıdır. tıpkı memcahe gibi çalışır. sql cachelendiği için server tarafında sıkıntı olsa da siteniz sql hatası sebebiyle kapanmamış olur...
  • 13-05-2018, 23:44:24
    #3
    Redis daha çok önbellekleme (cache) ve mesaj iletiminde kullanılır. Yalnızca Redis kullanman bir çözüm olamaz. MySQL ile kasan verini Redis aracılığıyla önbellekleyerek rahatça elde edebilirsin. NoSQL demişken örneğin MongoDB ile karıştırılmaması gerekir. İkisi de NoSQL ama ayrı alanlardalar.

    Redis uzaktan key-value store yani anahtar-değer kayıtçısı gibi görünse de aslında büyük veriler için büyük çözümler sunar.
    Ha ben sadece veritabanı olarak kullanmak istiyorum diyorsan, kullanılabilir ama yüksek bellekli (ram) bi makineye ihtiyacın olur o zaman.
  • 15-05-2018, 14:57:04
    #4
    600 satır veride like bile kasma yapmaz, yazılımda sıkıntı olabilir.sorguları direkt sql konsolundan çevirmeyi deneyin.
  • 15-05-2018, 23:17:31
    #5
    Asynchronous adlı üyeden alıntı: mesajı görüntüle
    600 satır veride like bile kasma yapmaz, yazılımda sıkıntı olabilir.sorguları direkt sql konsolundan çevirmeyi deneyin.
    hocam laravel frameworku ile direk all yapıp tablodaki tüm veriyi jquery datatable a aktarım paginate yapıyorum 600 veriyi çekerken en an az bi 5-6 sanye bekliyor
  • 16-05-2018, 00:01:00
    #6
    Loren adlı üyeden alıntı: mesajı görüntüle
    hocam laravel frameworku ile direk all yapıp tablodaki tüm veriyi jquery datatable a aktarım paginate yapıyorum 600 veriyi çekerken en an az bi 5-6 sanye bekliyor
    tablonun yapısını bilmediğim için net yorum yapamıyorum ama sık kullanılan bir özellikse ezsql cache i kullanabilirsiniz, milisaniyeye indirir sorguyu.laravel konusunda bilgi sahibi değilim malesef.
  • 16-05-2018, 10:06:37
    #7
    ztk
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Loren adlı üyeden alıntı: mesajı görüntüle
    Merhabalar ;

    bilmediğimden sizlere bir soru sormak istiyorum.Redis redis diye çok duydum nosql veritabanı ve laravel ile hazır entegrasyonu var fakat bu redis nasıl kullanılıyor ? redis kullanırsak mysqli kullanmyacakmıyız ? redis zaten ilişkisel veritabanı değil eğer mysql kullanmıyorsak join işlemlerini nasıl yapacağız yada ilişkisel olmayan yerlede mi redis kullanacağız ? benim sitemin 20 kolonlu bir veritabanı 600 satır veri aldıktan sonra kasmaya başlayınca başka bir çözüme odaklanmak istedim o yüzden sizlere soruyorum
    Hocam selamlar,
    20 kolonlu 600 satır veriyi tek seferde mi datatable a gönderiyorsunuz. Yani tek seferde tüm datayı çekip view e gönderiyorsunuz,
    sonra view'de datayı foreach ile döngüye sokup her <tr> ye bir row gelecek şekilde yazdırıyorsunuz, datatable paginate yapıyor veriyi sandığım kadarıyla.
    Çünkü bahsettiğiniz veri büyük bir veri değil, laravel ile de bu sorgu 5-6 saniye sürmez.
    Uzun süren olay bu datayı datatable'ın render edip sayfalamasıdır.

    Datatable serverside kullanarak her pagination sayfa geçişinde gerekli datayı çekmek doğru çözümdür. Burada redis in size pek faydası olmaz.. Yani tüm datayı değil de o an görüntülenen datayı çekmelisiniz her seferinde. Fakat bu çektiğiniz datayı datatable'ın kendi sınıfının verdiği formatta dönmelisiniz.

    Biraz karışık gelebilir ama size daha önce göndermiş olduğum bir sınıf vardı. Orda datatable metodu var.
    O metod ile Laravelde datatable için sayfalanmış veri gönderme şansınız var. Postgresql e göre yapmıştım ama mysql e de çevirip göndermeyi deneyeceğim vaktim olursa. Siz de deneyebilirsiniz
    pl/sql e göre birkaç fonksiyon var sadece.
    Siz çevirebilirseniz şöyle yapacaksınız.

    Gönderdiğim sınıfı AppLibraries diye bir dizine atın.
    Daha sonra bir controller olsun örneğin DataController;
    Göndermiş olduğum sınıfı aşağıdaki şekilde controller'a dahil edin,
    use App/Libraries/SinifAdi;
    bu controllerda da users diye bir metod olsun. Bu metod veritabanındaki user tablosundan userları çekiyor olsun.
    public function users(Request $request){
       // data isteği eğer datatable'dan geliyorsa request'in içinde draw diye bir anahtar olur.
      // bu yüzden bu değer varsa eğer istek datatable'dan geliyor demektir.
      //O zaman cevabı datatable a göre dönmek için
      // aşağıdaki işlemi yapabilirsin.
     if ($request->has('draw'))
          {
                    $result = SinifAdi::datatable($request, User::class);
                    return $result;
          }
    
        // Burdan sonra ise eğer datatable ile işi yoksa ne yapması
       // gerekiyorsa onu yapabilirsin örneğin userları view e göndermek için
       $users = User::all();
       return view('users',['users'=>$users]);
    }
    Şimdi bir tane de rota olsun.
    Route::get('users','DataController@users');
    Bu rotaya gelen istek tarayıcıdan geliyorsa yani adamın biri http://domain.com/users adresine giderse datatable ile işi yok demektir.
    O kişiye user view'i döner.

    Ama datatable dan geliyorsa ona istediği sayfanın datasını döner.
    Datatable da bu rotayı da şöyle verebilirsin.

     $(document).ready(function() {
         $('#example').DataTable( {
            "processing": true,
            "serverSide": true,
            "ajax": "{{url('users')}}"
         } );
    } );
    Artık datatable her sayfayı otomatik olarak veritabanından lazım olduğu zaman çekecektir.



    Redis'e gelince, redis bir veritabanı değildir aslına bakılırsa.
    Veri tutar ama bildiğimiz mantıkta veri arayıp bulmak için değil de zaten sonucunu bildiğimiz verileri tutup hızlı bir şekilde ulaşmak içindir.
    Cache yani arkadaşların da dediği gibi. Tabi çok güzel özellikleri var pub/sub gibi. Benim hayatımı kurtarıyor bazı işlerde mesela. http request atmadan
    iki farklı uygulamanın haberleşmesini sağlayabiliyorsunuz bir nodeJs uygulaması ile bir php uygulamasını birbirinden haberdar çalıştırabilirsiniz mesela
    redis ile. Ama mysql kafasında değildir bu mantık. O yüzden eğer sizin projenizdeki 600 satırlık veri hiç değişmiyorsa redis te tutup hızlı bir şekilde de ulaşabilirsiniz
    ama değişiyorsa bir anlamı yok.

    Kolay gelsin.
  • 18-05-2018, 11:30:55
    #8
    ztk adlı üyeden alıntı: mesajı görüntüle
    Hocam selamlar,
    20 kolonlu 600 satır veriyi tek seferde mi datatable a gönderiyorsunuz. Yani tek seferde tüm datayı çekip view e gönderiyorsunuz,
    sonra view'de datayı foreach ile döngüye sokup her <tr> ye bir row gelecek şekilde yazdırıyorsunuz, datatable paginate yapıyor veriyi sandığım kadarıyla.
    Çünkü bahsettiğiniz veri büyük bir veri değil, laravel ile de bu sorgu 5-6 saniye sürmez.
    Uzun süren olay bu datayı datatable'ın render edip sayfalamasıdır.

    Datatable serverside kullanarak her pagination sayfa geçişinde gerekli datayı çekmek doğru çözümdür. Burada redis in size pek faydası olmaz.. Yani tüm datayı değil de o an görüntülenen datayı çekmelisiniz her seferinde. Fakat bu çektiğiniz datayı datatable'ın kendi sınıfının verdiği formatta dönmelisiniz.

    Biraz karışık gelebilir ama size daha önce göndermiş olduğum bir sınıf vardı. Orda datatable metodu var.
    O metod ile Laravelde datatable için sayfalanmış veri gönderme şansınız var. Postgresql e göre yapmıştım ama mysql e de çevirip göndermeyi deneyeceğim vaktim olursa. Siz de deneyebilirsiniz
    pl/sql e göre birkaç fonksiyon var sadece.
    Siz çevirebilirseniz şöyle yapacaksınız.

    Gönderdiğim sınıfı AppLibraries diye bir dizine atın.
    Daha sonra bir controller olsun örneğin DataController;
    Göndermiş olduğum sınıfı aşağıdaki şekilde controller'a dahil edin,
    use App/Libraries/SinifAdi;
    bu controllerda da users diye bir metod olsun. Bu metod veritabanındaki user tablosundan userları çekiyor olsun.
    public function users(Request $request){
       // data isteği eğer datatable'dan geliyorsa request'in içinde draw diye bir anahtar olur.
      // bu yüzden bu değer varsa eğer istek datatable'dan geliyor demektir.
      //O zaman cevabı datatable a göre dönmek için
      // aşağıdaki işlemi yapabilirsin.
     if ($request->has('draw'))
          {
                    $result = SinifAdi::datatable($request, User::class);
                    return $result;
          }
    
        // Burdan sonra ise eğer datatable ile işi yoksa ne yapması
       // gerekiyorsa onu yapabilirsin örneğin userları view e göndermek için
       $users = User::all();
       return view('users',['users'=>$users]);
    }
    Şimdi bir tane de rota olsun.
    Route::get('users','DataController@users');
    Bu rotaya gelen istek tarayıcıdan geliyorsa yani adamın biri http://domain.com/users adresine giderse datatable ile işi yok demektir.
    O kişiye user view'i döner.

    Ama datatable dan geliyorsa ona istediği sayfanın datasını döner.
    Datatable da bu rotayı da şöyle verebilirsin.

     $(document).ready(function() {
         $('#example').DataTable( {
            "processing": true,
            "serverSide": true,
            "ajax": "{{url('users')}}"
         } );
    } );
    Artık datatable her sayfayı otomatik olarak veritabanından lazım olduğu zaman çekecektir.



    Redis'e gelince, redis bir veritabanı değildir aslına bakılırsa.
    Veri tutar ama bildiğimiz mantıkta veri arayıp bulmak için değil de zaten sonucunu bildiğimiz verileri tutup hızlı bir şekilde ulaşmak içindir.
    Cache yani arkadaşların da dediği gibi. Tabi çok güzel özellikleri var pub/sub gibi. Benim hayatımı kurtarıyor bazı işlerde mesela. http request atmadan
    iki farklı uygulamanın haberleşmesini sağlayabiliyorsunuz bir nodeJs uygulaması ile bir php uygulamasını birbirinden haberdar çalıştırabilirsiniz mesela
    redis ile. Ama mysql kafasında değildir bu mantık. O yüzden eğer sizin projenizdeki 600 satırlık veri hiç değişmiyorsa redis te tutup hızlı bir şekilde de ulaşabilirsiniz
    ama değişiyorsa bir anlamı yok.

    Kolay gelsin.
    Hocam Çok Sağolun teşekkürler