npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

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