# Memcached

Adres: https://softwaredictionary.org/tr/terimler/memcached
Kategori: Veritabanları
Son güncelleme: 2026-10-06
Okunuşu: mem keş di

Kısaca: Memcached, veritabanlarının yükünü hafifletip uygulamaları hızlandırmak için küçük verileri RAM'de tutan, açık kaynaklı bir anahtar-değer önbelleğidir.

## Memcached nedir?

Memcached, veriyi bellekte anahtar ve değer olarak tutan basit bir önbellek sunucusudur. Brad Fitzpatrick onu 2003'te LiveJournal'ı hızlandırmak için yazdı; sonrasında Facebook ve Wikipedia gibi sitelerin ölçeklenmesine yardım etti. Tek bir işi iyi yapar: uygulama `set` ile bir anahtarın altına bir değer koyar, `get` ile geri okur ve diske hiç dokunulmadığı için yanıt bir milisaniyenin çok altında gelir.

Tasarım bilerek sade tutulmuştur. Değerler, Memcached'in içine bakmadığı baytlardır; genellikle serileştirilmiş nesneler ya da render edilmiş HTML parçalarıdır. Anahtarlar en fazla 250 karakter, değerler ise varsayılan olarak en fazla 1 MB olabilir. Her öğenin bir sona erme süresi olabilir ve bellek dolduğunda en uzun süredir kullanılmayan öğeler atılır. Memcached sunucuları birbiriyle konuşmaz: istemci kütüphanesi bir sunucu seçmek için her anahtarı genellikle consistent hashing ile hash'ler; böylece sunucu eklemek kapasiteyi artırır, birini kaybetmek de yalnızca önbelleğin o dilimini kaybettirir.

Uygulamalar onu genellikle cache-aside kalıbıyla kullanır: önce önbelleğe bakılır, bulunamazsa veritabanı okunur ve sonuç bir yaşam süresiyle (TTL) önbelleğe yazılır. Sık aradığınız bir numarayı monitörünüze yapıştırdığınız bir not kâğıdı gibidir: rehberi açmaktan çok daha hızlıdır ve düşse de bir şey kaybolmaz. Memcached asla internetten erişilebilir olmamalıdır: 2018'de açıkta kalan sunucular rekor kıran DDoS amplification saldırıları için kötüye kullanıldı ve o günden beri UDP varsayılan olarak kapalıdır.

Memcached en çok Redis ile karşılaştırılır. Redis de bellek içi bir anahtar-değer deposudur, ama listeler, kümeler ve sıralı kümeler gibi veri türleri sunar, veriyi diske kaydedebilir, başka sunuculara replike olur ve pub/sub mesajlaşmayı destekler. Memcached'de bunların hiçbiri yoktur ve yeniden başlatıldığında verisini kaybeder; ama çok iş parçacıklıdır, işletmesi kolaydır ve büyük, sade önbellekler için çok verimlidir; bu yüzden yalnızca hızlı ve gözden çıkarılabilir bir önbelleğe ihtiyaç duyan ekiplere uyar.

## Önemli noktalar

- Memcached, çok küçük bir komut kümesine sahip, bellek içi bir anahtar-değer önbelleğidir.
- Öğelerin süresi belirlenen zamanda dolar; bellek dolduğunda en uzun süredir kullanılmayanlar atılır.
- İstemciler anahtarları sunuculara dağıtır; sunucular birbirleriyle veri paylaşmaz.
- Varsayılan olarak veri yalnızca bellekte yaşar ve yeniden başlatmada kaybolur; bu yüzden yalnızca yeniden oluşturulabilecek veriler tutulmalıdır.
- Redis veri yapıları, kalıcılık ve replikasyon ekler; Memcached daha sade ve çok iş parçacıklı kalır.

## Örnek: Memcached ile cache-aside kalıbı (Python)

```python
from pymemcache.client.base import Client

cache = Client(("localhost", 11211))   # Memcached's default port

def get_product_name(product_id):
    key = f"product:{product_id}:name"
    cached = cache.get(key)            # 1. try the cache first
    if cached is not None:
        return cached.decode()
    name = db.fetch_product_name(product_id)   # 2. on a miss, ask the database
    cache.set(key, name, expire=300)   # 3. keep it for 5 minutes
    return name
```

## Sık sorulan sorular

**Memcached ile Redis arasındaki fark nedir?**

İkisi de anahtar-değer verisini bellekte tutar. Memcached, yeniden başlatıldığında her şeyi kaybeden, string'ler için sade ve çok iş parçacıklı bir önbellektir; Redis ise veri yapıları, isteğe bağlı diske kalıcılık, replikasyon ve mesajlaşma özellikleri ekler.

**Memcached hâlâ kullanılıyor mu?**

Evet. Facebook gibi çok büyük siteler onu hâlâ devasa ölçekte çalıştırıyor, büyük bulut sağlayıcıları da onu yönetilen bir servis olarak sunuyor; yine de birçok yeni proje daha fazlasını yaptıkları için Redis'i ya da Valkey'i seçiyor.

**Memcached veriyi diske kaydeder mi?**

Varsayılan olarak hayır. Her şey RAM'de yaşar ve sunucu yeniden başladığında kaybolur; bu yüzden yalnızca asıl kopyası veritabanı gibi başka bir yerde duran veriler önbelleğe alınmalıdır.

## Kaynaklar

- [Memcached documentation](https://docs.memcached.org/)
- [Memcached protocol (protocol.txt)](https://github.com/memcached/memcached/blob/master/doc/protocol.txt)
- [Nishtala et al.: Scaling Memcache at Facebook (NSDI 2013)](https://www.usenix.org/conference/nsdi13/technical-sessions/presentation/nishtala)

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
