Ana içeriğe geç

Memcached

Okunuşu
mem keş di
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/memcached

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.

İlgili sayfalar

Kaynaklar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar