nginx

2011-08-12 48 views
5

için URL haritasına hizmet vermek için Redis'i kullanın. Redis'te, anahtar kelimeler olarak SEO dostu URL'ler ve değer olarak kötü olmayan sorgulama URL'leri olan dinamik bir veritabanını korumak istiyorum. İstek geldiğinde doğrudan Nginx'ten aramak istiyorum, kötü sorgulama URL'sini al ve içeriği sunmak için bunu Apache'ye ilet.nginx

Sadece düz bir harita dosyasına sahip olmayı düşündüm, ama bu oldukça büyük (200.000'den fazla giriş) olurdu ve sık sık bir cron işi veya bir şey tarafından güncellenmesi gerekecek ... çok zarif değil.

Benim fikrim böyle bir şeydir:

map $uri $new { 
    # instead of this... 
    # include /path/to/the/nginx_map.txt; 
    # I want to do this... 
    redis_magic_thing GET $uri; 
} 

Ben Nginx için HttpRedis Modülü kontrol edilmiş ancak örnekler gerçekten seyrek ve önbellek içeriğini kadar hizmet doğru dişli gibi görünüyor. Ayrıca Redis2 modülünü de kontrol ettim, ama bu overkill gibi görünüyor. Sadece eski GET komutlarını yapmalıyım.

Bunu yapmak için HttpRedis modülünü kullanabilir miyim ve doğruca Redis'e takılabilir miyim? Eğer öyleyse, böyle bir konfigürasyon nasıl görünecek?

Yardımlarınız için şimdiden teşekkür ederiz.

+1

Nginx'in olay sorgulamasını kullandığı daha genel durum tarafından daha iyi sağlanır, Redis tek iş parçacıklıdır. Her ikisi de bellekte% 100 olmalı ve sürekli zaman aramaları var ama Nginx tek iş parçacığı olmadığından, 20k RPS'nin ötesine geçmek istiyorsanız Redis kullanmanın çok daha hızlı olacağını söyleyebilirim. Bu nedenle, verileriniz sık sık değişmiyorsa ve Apache'de URL eşlemesiyle başa çıkmak için iyi bir nedeniniz varsa, haritayı bir dosyaya dökmeyi denemeyi ve güncellemeden sonra nginx yapılandırmasını yeniden yüklemek için inotify'ı kullanmanızı öneririz. – ColinM

cevap

1

HttpRedis'in önbelleğe alma konusunda daha fazla çalıştığı konusunda haklısınız. Redis2 modülünü kullanarak daha iyi servis edilirsiniz. Yürütülecek komutlar, redis2'nin