node-caching-mysql-connector-with-redis
v2.2.0
Published
Downloads
338
Readme
NODE CACHING MYSQL CONNECTOR WITH REDIS V.2.0
NODE CACHING MYSQL CONNECTOR WITH REDIS, MySQL bağlantılarınızı yönetirken ve sorgu sonuçlarını Redis ile önbelleğe alarak performansı artırır.
Özellikler
Belgelerde belirtildiği gibi ortam değişkenlerinizi oluşturun. İhtiyacınız olan fonksiyonu içe aktarın ve örneklerde olduğu gibi hemen kullanmaya başlayın. Kullanıcı rehberi
getCacheQuery kullanım önerisi incelemesi
Bu fonksiyon, SQL sorgusunu çalıştırır ve sonucu belirtilen önbellek adıyla Redis'te saklar. Eğer önbellekte veri mevcutsa, sonuçları doğrudan Redis'ten alarak veritabanından sorgu yapma ihtiyacını ortadan kaldırır.
getCacheQuery("sql", parameterArray,"cacheName")
.then((data) => {
return data;
}).catch(err => {
throw err;
});
Örnek kullanım:
getCacheQuery("select * from users where companyId=?", [companyId], "userlist-" + companyId)
.then((data) => {
return data;
}).catch(err => {
throw err;
});
Bu örnekte, "select * from users where companyId=?" ifadesiyle bir SQL sorgusu yapılıyor. Burada ? işareti, sorgunun parametrelerinden birini temsil ediyor ve bu parametrelerin değerleri bir dizi olarak veriliyor. Bu örnekte [companyId] olarak verilmiştir. Bu yapı, SQL Injection saldırılarını önlemeye yardımcı olur.
Sorgu sonucu, Redis'te "userlist-" + companyId şeklinde bir anahtar adı ile önbelleğe alınıyor. companyId değeri, önbellek anahtarının dinamik olarak oluşturulmasına ve belirli bir şirketin kullanıcı listesini önbelleğe almasına yardımcı olur.
getCacheQueryPagination kullanım önerisi incelemesi
Bu fonksiyon, sayfalama ile ilgili bilgileri alarak sonuçları sayfalara böler ve belirtilen önbellek adıyla Redis'te saklar. Eğer önbellekte veri mevcutsa, sonuçları doğrudan Redis'ten alarak veritabanından sorgu yapma ihtiyacını ortadan kaldırır.
Sayfadaki varsayılan öğe sayısı "30"dur.
getCacheQueryPagination("sql", parameterArray,"cacheName", currentPage, numberOfElementsIn thePage)
.then((data) => {
return data;
}).catch(err => {
throw err;
});
Örnek kullanım:
getCacheQueryPagination("select * from users where companyId=?", [companyId], "userlist-" + companyId + "-page-" + page, page, 30)
.then((data) => {
return data;
}).catch(err => {
throw err;
});
Bu örnekte, aynı SQL sorgusu kullanılıyor, ancak sonuçlar sayfalara bölünüyor. Burada da ? işareti kullanılarak parametre temsil ediliyor ve [companyId] dizisi ile değeri sağlanıyor.
Önbellek anahtarının adı, "userlist-" + companyId + "-page-" + page şeklinde oluşturuluyor. Bu yapı, sayfalamanın Redis'teki önbellekte düzgün bir şekilde çalışmasını sağlar. İstenen sayfa ve sayfadaki öğe sayısı (örnekte 30) da fonksiyona parametre olarak verilir.
Her iki örnekte de, then ve catch blokları, fonksiyonların başarılı sonuçlarını veya olası hatalarını işlemek için kullanılır. Başarılı bir sonuç durumunda, veriler döndürülürken, hata durumunda hata yakalanır ve işlenir.
Peki ya farklı olan nedir
getCacheQuery ve getCacheQueryPagination fonksiyonları arasındaki temel fark, getCacheQueryPagination fonksiyonunun sayfalama özelliğini desteklemesidir. İki fonksiyon da, SQL sorgularının sonuçlarını Redis önbelleğine alarak performansı artırmaya yönelik çalışır. Ancak, sayfalama desteği gerektiren durumlar için getCacheQueryPagination kullanılır.
getCacheQuery fonksiyonu, SQL sorgusunun sonucunu önbelleğe alır ve tüm sonuç kümesini döndürür. Bu fonksiyon, sayfalama gerektirmeyen ve tüm sonuçların tek bir istekte döndürülmesi gereken durumlar için kullanılır.
Öte yandan, getCacheQueryPagination fonksiyonu, sonuçları sayfalara ayırarak önbelleğe alır ve istenilen sayfadaki sonuçları döndürür. Bu fonksiyon, büyük sonuç kümelerinin sayfalara bölünerek döndürülmesi gereken durumlar için kullanılır.
Özetle, getCacheQuery ve getCacheQueryPagination fonksiyonları arasındaki temel fark, sayfalama özelliğinin desteklenmesidir. Sayfalama gerektiren durumlar için getCacheQueryPagination, diğer durumlar için ise getCacheQuery kullanılır.
QuaryCache kullanım önerisi incelemesi
Bu fonksiyon, SQL sorgusunu çalıştırır ve ardından belirtilen önbellek anahtarını sıfırlar. Bu, önbellekte saklanan eski verilerin güncellendiğinde otomatik olarak temizlenmesini sağlar.
QuaryCache("sql", parameterArray, "cache key to reset")
.then((data) => {
return data;
}).catch(err => {
throw err;
});
Örnek kullanım:
QuaryCache("insert into users set fullname=? ,email=?,password=?,companyId=?", [fullname, email, password, companyId], "userlist-" + companyId)
.then((data) => {
return data;
}).catch(err => {
throw err;
});
Bu örnekte, "insert into users set fullname=?, email=?, password=?, companyId=?" ifadesiyle bir SQL sorgusu yapılıyor. Burada yine ? işaretleri kullanılarak parametreler temsil ediliyor ve bu parametrelerin değerleri bir dizi olarak veriliyor. Bu örnekte [fullname, email, password, companyId] olarak verilmiştir.
İşlem tamamlandığında, belirtilen önbellek anahtarını sıfırlamak için "userlist-" + companyId şeklinde bir önbellek anahtarı belirtilir. Bu durumda, yeni bir kullanıcı eklendiğinde, önbellekteki ilgili şirketin kullanıcı listesinin güncellenmesi gerekmektedir.
Yine then ve catch blokları, fonksiyonların başarılı sonuçlarını veya olası hatalarını işlemek için kullanılır. Başarılı bir sonuç durumunda, veriler döndürülürken, hata durumunda hata yakalanır ve işlenir.
Bu örneklerde kullanılan ? işaretleri ve parametrelerin dizi olarak verilmesi, SQL sorgularını daha güvenli ve esnek hale getirir. Bu yapı, SQL Injection saldırılarını önlemeye yardımcı olur ve parametrelerin kolayca değiştirilmesine olanak tanır. Bu fonksiyonlar sayesinde, Redis ile önbellekleme ve MySQL ile veritabanı işlemleri arasındaki entegrasyon daha düzgün ve kolay hale gelir.
Ortam Değişkenleri Örnekleri
Örnek ortam değişkenleri dosya içeriği (.env dosyası):
Copy code
## db veriables
DB_HOST="localhost"
DB_USERNAME="root"
DB_PASSWORD=""
DB_NAME=""
DB_PORT=""
TIMEZONE="+00:00" // default
## redis veriables
REDIS_SERVER="localhost"
REDIS_PORT="6379"
REDIS_PASSWORD=""
Geliştirme Lisans MIT [git-repo-url]: https://github.com/hayatialikeles/NODE-CACHING-MYSQL-CONNECTOR-WITH-REDIS.git