Utveckling
Anslutningsåter flexibilitet och serverbelastning
När du utvecklar klientprogram bör du tänka på relevanta metodtips för anslutningsåter flexibilitet och hantering av serverbelastning.
Överväg fler nycklar och mindre värden
Azure Cache for Redis fungerar bäst med mindre värden. Överväg att dela upp större data segment i mindre segment för att sprida data över flera nycklar. Mer information om den perfekta värdestorleken finns i den här artikeln.
Stor storlek på begäran eller svar
En stor begäran/ett stort svar kan orsaka tidsgränser. Anta till exempel att tidsgränsvärdet som konfigurerats på klienten är 1 sekund. Programmet begär två nycklar (till exempel "A" och "B") samtidigt (med samma fysiska nätverksanslutning). De flesta klienter stöder "pipelining", där båda begärandena "A" och "B" skickas en efter en utan att vänta på sina svar. Servern skickar tillbaka svaren i samma ordning. Om svaret "A" är stort kan den äta upp den mesta tidsgränsen för senare begäranden.
I följande exempel skickas begäran "A" och "B" snabbt till servern. Servern börjar skicka svar "A" och "B" snabbt. På grund av dataöverföringstider måste svar "B" vänta efter att svaret "A" har tagit slut trots att servern svarade snabbt.
|-------- 1 Second Timeout (A)----------|
|-Request A-|
|-------- 1 Second Timeout (B) ----------|
|-Request B-|
|- Read Response A --------|
|- Read Response B-| (**TIMEOUT**)
Det här begäran/svaret är svårt att mäta. Du kan instrumentera din klientkod för att spåra stora begäranden och svar.
Lösningar för stora svarsstorlekar varierar, men omfattar:
- Optimera ditt program för ett stort antal små värden i stället för några få stora värden.
- Den bästa lösningen är att dela upp dina data i relaterade mindre värden.
- Se inlägget Vad är det perfekta värdestorleksintervallet för Redis? Är 100 KB för stort? för mer information om varför mindre värden rekommenderas.
- Öka storleken på den virtuella datorn för att få högre bandbreddsfunktioner
- Mer bandbredd på din virtuella klient- eller serverdator kan minska dataöverföringstiden för större svar.
- Jämför din aktuella nätverksanvändning på båda datorerna med gränserna för din aktuella VM-storlek. Mer bandbredd på bara servern eller bara på klienten kanske inte räcker.
- Öka antalet anslutningsobjekt som programmet använder.
- Använd en resursallokeringsmetod för att göra begäranden över olika anslutningsobjekt.
Nyckeldistribution
Om du planerar att använda Redis-klustring läser du först Metodtips för Redis-klustring med nycklar.
Använda pipelining
Försök att välja en Redis-klient som stöder Redis-pipelining. Pipelining hjälper till att effektivt använda nätverket och få bästa möjliga dataflöde.
Undvik kostsamma åtgärder
Vissa Redis-åtgärder, till exempel kommandot KEYS, är dyra och bör undvikas. Några saker att tänka på när det gäller långvariga kommandon finns i långvariga kommandon
Välj en lämplig nivå
Använd Standard eller Premium för produktionssystem. Använd inte Basic-nivån i produktion. Basic-nivån är ett system med en nod utan datareplikering och inget serviceavtal. Använd också minst ett C1-cacheminne. C0-cacheminnen är endast avsedda för enkla dev/test-scenarier eftersom:
- de delar en processorkärna
- använda lite minne
- är känsliga för problem med störningar hos grannar
Vi rekommenderar prestandatestning för att välja rätt nivå och verifiera anslutningsinställningarna. Mer information finns i Prestandatestning.
Klient i samma region som cache
Leta upp din cacheinstans och ditt program i samma region. Om du ansluter till en cache i en annan region kan latensen öka och tillförlitligheten minska avsevärt.
Även om du kan ansluta utanför Azure, rekommenderas det inte särskilt när du använder Redis som cache. Om du använder Redis-servern som ett nyckel/värde-lager är svarstiden kanske inte det primära problemet.
Använda TLS-kryptering
Azure Cache for Redis kräver TLS-krypterad kommunikation som standard. TLS-versionerna 1.0, 1.1 och 1.2 stöds för närvarande. TLS 1.0 och 1.1 är dock på väg att utfasas i hela branschen, så använd TLS 1.2 om det är möjligt.
Om klientbiblioteket eller verktyget inte stöder TLS kan du aktivera okrypterade anslutningar via Azure Portal eller hanterings-API:er. I de fall där krypterade anslutningar inte är möjliga rekommenderar vi att du placerar cacheminnet och klientprogrammet i ett virtuellt nätverk. Mer information om vilka portar som används i scenariot med virtuell nätverkscache finns i den här tabellen.
Klientbiblioteksspecifik vägledning
- StackExchange.Redis (.NET)
- Java – Vilken klient ska jag använda?
- Sallad (Java)
- Jedis (Java)
- Node.js
- PHP
- HiRedisCluster
- ASP.NET Sessionstillståndsprovider