Lua ile Hız Sınırlama
Redis Lua'da kayan pencere hız sınırlayıcılarını atomik olarak uygulayın.
Lua ile Hız Sınırlama, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 3. 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.
Hız Sınırlama İçin Redis Neden Kullanılır?
Redis; atomik işlemler, bellek içi hız ve birden çok uygulama sunucusu arasında paylaşılan durum sağlar. Bu özellikler Redis'i dağıtık hız sınırlama için ideal kılar.
Basit Sabit Pencere Sayacı
INCR ve EXPIRE kullanarak her zaman penceresindeki istekleri sayın.
EVAL "
local key = KEYS[1]
local limit = tonumber(ARGV[1])
local window = tonumber(ARGV[2])
local count = redis.call('INCR', key)
if count == 1 then
redis.call('EXPIRE', key, window)
end
if count > limit then
return 0 -- rejected
end
return 1 -- allowed
" 1 rate:user:123 100 60Sıralı Kümelerle Kayan Pencere
Daha doğru bir hız sınırlayıcı, zaman damgasına göre anahtarlanmış bir sıralı küme kullanır. Eski girdileri kaldırın, mevcut isteği ekleyin ve kümenin boyutunu sayın.
EVAL "
local key = KEYS[1]
local now = tonumber(ARGV[1])
local window = tonumber(ARGV[2])
local limit = tonumber(ARGV[3])
redis.call('ZREMRANGEBYSCORE', key, 0, now - window * 1000)
redis.call('ZADD', key, now, now .. math.random())
redis.call('EXPIRE', key, window)
local count = redis.call('ZCARD', key)
if count > limit then return 0 end
return 1
" 1 slidingRate:user:123 1706000000000 60 100Belirteç Kovası Algoritması
Belirteç kovası, ortalama hızı korurken ani istek artışlarına izin verir. Belirteçleri zaman içinde yenileyin; her istek bir belirteç tüketir.
Sızdıran Kova Algoritması
Sızdıran kova, kesin ve sabit bir hız uygular. İstekler kuyruğa (kovaya) alınır ve sabit bir boşaltma hızında işlenir. Taşan istekler reddedilir.
Kullanıcı ve IP Başına Sınırlar
Hız sınırlayıcıyı kullanıcı kimliği, API anahtarı veya IP adresine göre anahtarlayın: rate:{userId}, rate:{ip}, rate:{apiKey}.
Kademeli Hız Sınırları
Kullanıcı katmanına göre farklı sınırlar uygulayın (ücretsiz ve profesyonel). Hangi sınırın uygulanacağını seçmeden önce kullanıcının katmanını denetleyin.
EVAL "
local tier = redis.call('HGET', 'user:tier', ARGV[1])
local limit = tier == 'pro' and 10000 or 1000
-- ... rest of rate limit check
" 0 "userId123"Üstbilgileri Döndürme
Kalan istek sayısını ve sıfırlanma zamanını betikten döndürün; böylece uygulama HTTP yanıtındaki X-RateLimit üstbilgilerini ayarlayabilir.
return {allowed, limit - count, resetTime}Dağıtık Atomiklik Güvencesi
Tüm hız sınırı denetimi tek bir EVAL betiğinde bulunduğundan, Redis kümesini paylaşan tüm uygulama sunucusu örneklerinde atomik olarak gerçekleşir.
Redis Kümesi Notu
Redis Kümesi kipinde, bir betikte kullanılan tüm KEYS aynı yuvaya karmalanmalıdır. Birlikte konumlandırmayı zorlamak için karma etiketleri kullanın: rate:{user123}:requests.
Hız Sınırlarını İzleme
Reddedilen istekleri kullanıcı/IP bilgileriyle günlüğe kaydedin. Reddetme oranları arttığında uyarılar oluşturun (bu, bir saldırıya veya yanlış yapılandırmaya işaret eder).
Hız Sınırlama Sorusu
Hız sınırlama için Redis Lua betiği, uygulama tarafındaki sayaçlardan neden daha iyidir?
Özet: Lua ile Hız Sınırlama
INCR+EXPIRE (sabit pencere) veya sıralı kümeleri (kayan pencere) kullanarak Redis Lua'da hız sınırlayıcılar uygulayın. Atomik betik, dağıtık uygulama sunucuları arasında doğruluğu garanti eder. HTTP üstbilgileri için kalan kotayı döndürün.
Sıkça Sorulan Sorular
“Lua ile Hız Sınırlama” dersi ücretsiz mi?
Evet — “Lua ile Hız Sınırlama” 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.
“Lua ile Hız Sınırlama” dersinde ne öğreneceğim?
Redis Lua'da kayan pencere hız sınırlayıcılarını atomik olarak uygulayı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 3. dersidir.
“Lua ile Hız Sınırlama” 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
- EVAL ve Redis Lua Ortamı
- Atomik İşlemler ve İşlemler
- Lua ile Hız Sınırlama
- SCRIPT LOAD ve EVALSHA