0Pricing
Lua Academy · Ders

Paylaşılan Bellek Sözlükleri

Düşük gecikmeli aramalar için verileri çalışanlar arasında ngx.shared.DICT ile önbelleğe alın.

Paylaşılan Bellek Sözlükleri, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.

ngx.shared.DICT Nedir?

ngx.shared.DICT, tüm Nginx worker süreçlerinin erişebildiği bir paylaşılan bellek alanıdır. Önbellekleme ve koordinasyon için O(1) get/set/incr işlemleri sağlar.

nginx.conf İçinde Paylaşılan Belleği Tanımlama

Paylaşılan sözlükleri http bloğunda bir ad ve boyut belirterek ayırın.

# nginx.conf
http {
  lua_shared_dict rate_limit 10m;
  lua_shared_dict cache      50m;
  lua_shared_dict locks      1m;
}

Temel Getirme ve Ayarlama

İsteğe bağlı bir TTL (saniye cinsinden yaşam süresi) ile değerleri depolayın ve geri alın.

-- content_by_lua_block
local cache = ngx.shared.cache
cache:set("greeting", "Hello, World!", 60)  -- expires in 60s
local val = cache:get("greeting")
ngx.say(val)  -- Hello, World!

Atomik Artırma

dict:incr(key, delta, init, expiry) bir sayacı atomik olarak artırır. Anahtar mevcut değilse init değeriyle başlatır.

local rl = ngx.shared.rate_limit
local count = rl:incr("req:" .. ngx.var.remote_addr, 1, 0, 60)
if count > 100 then
  ngx.exit(429)  -- Too Many Requests
end

Paylaşılan Bellekle Hız Sınırlama

incr deseni, basit bir kayan pencere hız sınırlayıcısı uygular; bu, en yaygın OpenResty desenlerinden biridir.

delete ve flush

dict:delete(key) tek bir anahtarı kaldırır. dict:flush_all() tüm anahtarları süresi dolmuş olarak işaretler (tembel silme). dict:flush_expired(n) süresi dolmuş anahtarları etkin biçimde kaldırır.

Atomik Ekleme

dict:add(key, val, expiry) bir anahtarı yalnızca henüz mevcut değilse ayarlar; dağıtık kilitleme için kullanışlıdır.

local locks = ngx.shared.locks
local ok, err = locks:add("my_lock", true, 5)  -- 5s lock
if not ok then
  ngx.say("Lock held, try later")
  return
end
-- critical section
-- locks:delete("my_lock")  -- release

Paylaşılan Bellek Boyutunu Planlama

Her anahtar-değer çifti ek yük taşır (~100 bayt). Tahmin: size_mb * 1024^2 / avg_entry_size = maksimum giriş sayısı. dict:capacity() ve dict:free_space() ile izleyin.

Bellek Tahliyesi

Sözlük dolduğunda OpenResty yer açmak için en eski girdileri tahliye eder. Tahliye davranışını denetlemek için uygun TTL değerleri belirleyin.

Worker'lar Arası Koordinasyon

Tüm worker'lar aynı sözlüğü paylaştığından, tüm worker süreçleri arasında lider seçimi için :add, genel sayaçlar için :incr kullanın.

Sınırlamalar

Paylaşılan sözlükler yalnızca skaler değerleri (dize, sayı, boole değeri) destekler. Tabloları cjson ile JSON'a serileştirerek depolayın.

Paylaşılan Bellek Sorusu

dict:incr(key, 1, 0, 60) ne yapar?

Özet: Paylaşılan Bellek Sözlükleri

ngx.shared.DICT, tüm worker'lar arasında O(1) atomik get/set/incr işlemleri sağlar. Hız sınırlama, önbellekleme ve dağıtık kilitleme için kullanın. Tahliyeyi denetlemek üzere TTL değerleri belirleyin. Karmaşık değerler için tabloları JSON'a serileştirin.

Sıkça Sorulan Sorular

“Paylaşılan Bellek Sözlükleri” dersi ücretsiz mi?

Evet — “Paylaşılan Bellek Sözlükleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.

“Paylaşılan Bellek Sözlükleri” dersinde ne öğreneceğim?

Düşük gecikmeli aramalar için verileri çalışanlar arasında ngx.shared.DICT ile önbelleğe alın. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Lua Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Paylaşılan Bellek Sözlükleri” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. OpenResty Mimarisi
  2. Lua'da HTTP İsteklerini İşleme
  3. Cosocket'ler ve Engellemesiz TCP
  4. Paylaşılan Bellek Sözlükleri
← Lua Academy Sayfasına Dön