Node.js Redis Kullanımı: Hızlı ve Esnek Çözüm

Posted by

Merhaba arkadaşlar, bu yazımda sizlere Node.js Redis Kullanımı: Hızlı ve Esnek Çözüm konusundan bahsedeceğim.

Redis (Remote Dictionary Server), hafıza tabanlı çalışan, son derece hızlı ve esnek bir veri yapısı depolama aracıdır. Node.js ile Redis’i birleştirerek önbellekleme, oturum yönetimi ve gerçek zamanlı veriler için çözümler oluşturabilirsiniz.

Redis’i Node.js ile Kullanma: Başlangıç

1. Gerekli Paketlerin Kurulumu

Node.js projenize Redis bağlantısı sağlamak için redis kütüphanesini ve Express framework’ünü kullanabilirsiniz. Aşağıdaki komut ile gerekli paketlerin kurulumunu gerçekleştiriyoruz.

npm install redis express body-parser

2. Redis Sunucusunun Docker Üzerinde Çalıştırılması

Redis’i Docker üzerinde kolayca çalıştırabilirsiniz. Bunun için aşağıdaki komutları kullanarak Redis’i başlatıyoruz.

Docker kurulumu için bir Docker ile Redis Kurulumu: Adım Adım Rehber yazımı inceleyebilirsiniz.

docker run --name redis-server -d -p 6379:6379 redis

Bu komut, Redis’i 6379 portunda çalıştırır ve yerel sistemden erişime açar.

Redis konteynerinin durumunu kontrol etmek için şu komutu kullanabilirsiniz:

docker ps

Redis API CRUD İşlemleri

1. Express Sunucusunu ve Redis Bağlantısını Kurma

const express = require('express');
const redis = require('redis');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.json());

// Redis istemcisi oluşturma
const client = redis.createClient({
    socket: {
        host: 'localhost', // Docker Redis için 'localhost' veya Docker network'üne bağlıysa özel IP
        port: 6379,
    },
});

(async () => {
    try {
        await client.connect();
        console.log('Redis sunucusuna bağlanıldı.');
    } catch (err) {
        console.error('Redis bağlantı hatası:', err);
    }
})();

client.on('error', (err) => {
    console.error('Redis hata oluştu:', err);
});

const PORT = 3000;

2. CRUD İşlemleri için API Endpoint’leri

a. Veri Ekleme (Create)
app.post('/api/data', async (req, res) => {
    const { key, value } = req.body;

    try {
        await client.set(key, value);
        res.status(201).send({ message: 'Veri başarıyla eklendi.', key, value });
    } catch (err) {
        res.status(500).send({ error: 'Veri eklenirken hata oluştu.', details: err.message });
    }
});
b. Veri Okuma (Read)
app.get('/api/data/:key', async (req, res) => {
    const { key } = req.params;

    try {
        const value = await client.get(key);

        if (value) {
            res.send({ key, value });
        } else {
            res.status(404).send({ error: 'Veri bulunamadı.' });
        }
    } catch (err) {
        res.status(500).send({ error: 'Veri alınırken hata oluştu.', details: err.message });
    }
});
c. Veri Güncelleme (Update)
app.put('/api/data/:key', async (req, res) => {
    const { key } = req.params;
    const { value } = req.body;

    try {
        const exists = await client.exists(key);

        if (exists) {
            await client.set(key, value);
            res.send({ message: 'Veri başarıyla güncellendi.', key, value });
        } else {
            res.status(404).send({ error: 'Güncellenecek veri bulunamadı.' });
        }
    } catch (err) {
        res.status(500).send({ error: 'Veri güncellenirken hata oluştu.', details: err.message });
    }
});
d. Veri Silme (Delete)
app.delete('/api/data/:key', async (req, res) => {
    const { key } = req.params;

    try {
        const result = await client.del(key);

        if (result) {
            res.send({ message: 'Veri başarıyla silindi.', key });
        } else {
            res.status(404).send({ error: 'Silinecek veri bulunamadı.' });
        }
    } catch (err) {
        res.status(500).send({ error: 'Veri silinirken hata oluştu.', details: err.message });
    }
});
3. Sunucuyu Başlatma
app.listen(PORT, () => {
    console.log(`Sunucu http://localhost:${PORT} adresinde çalışıyor.`);
});

Bu CRUD API ile Redis üzerinde temel veri yönetim işlemlerini gerçekleştirebilirsiniz. API’nin işlevselliğini genişletmek isterseniz, Redis’in diğer özelliklerinden faydalanabilirsiniz.

Umarım faydalı olur.

Bir sonraki yazıda görüşmek üzere…

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir