Geliştirme
Bağlantıya karşı güvenlik ve sunucu yükü
İstemci uygulamaları geliştirmede, bağlantıya karşı daha fazla güvenlik ve sunucu yükünü yönetmeye yönelik en iyi yöntemleri göz önünde bulundurabilirsiniz.
Daha fazla anahtar ve daha küçük değerler düşünün
Redis için Azure Cache küçük değerlerle en iyi şekilde çalışır. Verileri birden çok anahtara yaymak için daha büyük veri öbeklerini daha küçük öbeklere bölmeyi göz önünde bulundurabilirsiniz. İdeal değer boyutu hakkında daha fazla bilgi için bu makaleye bakın.
Büyük istek veya yanıt boyutu
Büyük bir istek/yanıt zaman aşımına neden olabilir. Örneğin, istemciniz üzerinde yapılandırılan zaman aşımı değerinizin 1 saniye olduğunu varsayalım. Uygulamanız aynı anda iki anahtar (örneğin, 'A' ve 'B') (aynı fiziksel ağ bağlantısını kullanarak) gerektirir. İstemcilerin çoğu ,hem 'A' hem de 'B' isteklerinin yanıtlarını beklemeden tekrar tekrar gönderildiği "kanal" isteğini destekler. Sunucu, yanıtları aynı sırayla geri gönderir. 'A' yanıtı büyükse, daha sonraki istekler için zaman aşımının çoğunu yer.
Aşağıdaki örnekte 'A' ve 'B' istekleri sunucuya hızla gönderilir. Sunucu hızla 'A' ve 'B' yanıtları göndermeye başlar. Veri aktarım süreleri nedeniyle sunucu hızla yanıt verse bile 'B' yanıtının 'A' yanıtını beklemesi gerekir.
|-------- 1 Second Timeout (A)----------|
|-Request A-|
|-------- 1 Second Timeout (B) ----------|
|-Request B-|
|- Read Response A --------|
|- Read Response B-| (**TIMEOUT**)
Bu istek/yanıt, ölçülebilir zor bir istektir. Büyük istekleri ve yanıtları izlemek için istemci kodunuzu izleyebilirsiniz.
Büyük yanıt boyutları için çözünürlükler çeşitlidir ancak şunları içerir:
- Birkaç büyük değer yerine çok sayıda küçük değer için uygulamanızı en iyi duruma getirme.
- Tercih edilen çözüm, verilerinizi ilgili küçük değerlere göre bozmaktır.
- Redis için ideal değer boyutu aralığı nedir? gönderiye bakın 100 KB fazla mı büyük? daha küçük değerlerin neden önerildikleri hakkında ayrıntılar için.
- Daha yüksek bant genişliği özellikleri elde etmek için VM'nizin boyutunu artırma
- İstemci veya sunucu VM'niz üzerinde daha fazla bant genişliği, daha büyük yanıtlar için veri aktarım sürelerini düşürebilirsiniz.
- Her iki makinede de geçerli ağ kullanımınızı geçerli VM boyutu sınırlarıyla karşılaştırın. Yalnızca sunucuda veya yalnızca istemcide daha fazla bant genişliği yeterli olabilir.
- Uygulamanın kullandığı bağlantı nesnelerinin sayısını artırma.
- Farklı bağlantı nesneleri üzerinde istekler yapmak için bir kez deneme yaklaşımı kullanın.
Anahtar dağıtımı
Redis kümeley hizmetini kullanmayı planlıyorsanız, önce Anahtarlarla Redis Kümeleme en iyi yöntemleri makalesi'ni okuyun.
Kanallama kullanma
Redis kanallarını destekleyen bir Redis istemcisi seçmeyi deneyin. Kanal işleme, ağı verimli bir şekilde kullanmaya ve mümkün olan en iyi aktarım hızını elde etmek için yardımcı olur.
Pahalı işlemlerden kaçının
KEYS komutu gibi bazı Redis işlemleri pahalıdır ve kaçınılmalıdır. Uzun süre çalışan komutlar hakkında bazı noktalar için bkz. uzun süre çalışan komutlar
Uygun bir katman seçin
Üretim sistemleri için Standart Premium katmanını kullanın. Üretimde Temel katmanını kullanma. Temel katman, veri çoğaltması ve SLA'sı olan tek düğümlü bir sistemdir. Ayrıca en az C1 önbelleği kullanın. C0 önbellekleri yalnızca basit geliştirme ve test senaryoları için kullanılır çünkü:
- cpu çekirdeğini paylaşırlar
- az bellek kullanma
- gürültülü komşu sorunlarına karşı çok fazla
Doğru katmanı seçmek ve bağlantı ayarlarını doğrulamak için performans testi öneririz. Daha fazla bilgi için bkz. Performans testi.
İstemci önbellekle aynı bölgede
Önbellek örneğinizi ve uygulamanızı aynı bölgede bulun. Farklı bir bölgedeki önbelleğe bağlanmak gecikme süresini önemli ölçüde artırabilir ve güvenilirliği azaltabilir.
Azure'ın dışından bağlanabilirsiniz ancak özellikle redis'i önbellek olarak kullanırken bu önerilmez. Redis sunucusunu yalnızca bir anahtar/değer deposu olarak kullanıyorsanız, öncelikli sorun gecikme süresi olabilir.
TLS şifrelemesi kullanma
Redis için Azure Cache varsayılan olarak TLS şifreli iletişim gerektirir. TLS 1.0, 1.1 ve 1.2 sürümleri şu anda de destektedir. Ancak TLS 1.0 ve 1.1, sektör genelinde kullanımdan için bir yoldadır, bu nedenle mümkünse TLS 1.2'yi kullanın.
İstemci kitaplığınız veya aracınız TLS'yi desteklemezse, Azure portal veya yönetim API'leri aracılığıyla şifrelenmemiş bağlantıları etkinleştirebilirsiniz. Şifrelenmiş bağlantıların mümkün olmayan durumlarda, önbelleğinizi ve istemci uygulamanızı bir sanal ağa yerleştirmenizi öneririz. Sanal ağ önbelleği senaryosunda hangi bağlantı noktalarının kullanıldığına ilişkin daha fazla bilgi için bu tabloya bakın.
İstemci kitaplığına özgü kılavuz
- StackExchange.Redis (.NET)
- Java - Hangi istemciyi kullan uygulamam gerekir?
- Marul (Java)
- Jedis (Java)
- Node.js
- PHP
- HiRedisCluster
- ASP.NET Oturum Durumu Sağlayıcısı