Minneshantering
Avlägsnandeprincip
Välj en borttagningsprincip som fungerar för ditt program. Standardprincipen för Azure Cache for Redis är volatile-lru
, vilket innebär att endast nycklar som har ett TTL-värde inställt med ett kommando som EXPIRE är berättigade till borttagning. Om inga nycklar har ett TTL-värde tas inga nycklar bort. Om du vill att systemet ska tillåta att en nyckel tas bort om det är minnestryck kan du överväga allkeys-lru
principen.
Nycklar upphör att gälla
Ange ett förfallovärde för dina nycklar. En förfallotid tar bort nycklar proaktivt i stället för att vänta tills minnesbelastning uppstår. När borttagning sker på grund av minnesbelastning kan det orsaka mer belastning på servern. Mer information finns i dokumentationen för kommandona EXPIRE och EXPIREAT .
Minimera minnesfragmentering
Stora värden kan lämna minnet fragmenterat vid borttagning och kan leda till hög minnesanvändning och serverbelastning.
Övervaka minnesanvändning
Lägg till övervakning av minnesanvändning för att säkerställa att du inte får slut på minne och har möjlighet att skala cacheminnet innan du får problem.
Konfigurera din maxmemory-reserverade inställning
Konfigurera din maxmemory-reserverade inställning för att förbättra systemets svarstider:
En tillräcklig reservationsinställning är särskilt viktig för skrivintensiva arbetsbelastningar eller om du lagrar värden på 100 KB eller mer i cacheminnet. Som standard när du skapar en cache är cirka 10 % av det tillgängliga minnet reserverat för
maxmemory-reserved
. Ytterligare 10 % är reserverat förmaxfragmentationmemory-reserved
. Du kan öka det reserverade beloppet om du har skrivintensiva belastningar.Inställningen
maxmemory-reserved
konfigurerar mängden minne i MB per instans i ett kluster som är reserverat för icke-cacheåtgärder, till exempel replikering under redundansväxling. Genom att ange det här värdet får du en mer konsekvent Redis-serverupplevelse när belastningen varierar. Det här värdet bör vara högre för arbetsbelastningar som skriver stora mängder data. När minnet är reserverat för sådana åtgärder är det inte tillgängligt för lagring av cachelagrade data. Det tillåtna intervallet förmaxmemory-reserved
är 10 % – 60 % avmaxmemory
. Om du försöker ange dessa värden som är lägre än 10 % eller högre än 60 %, utvärderas de på nytt och anges till minst 10 % och högst 60 %. Värdena återges i megabyte.Inställningen
maxfragmentationmemory-reserved
konfigurerar mängden minne i MB per instans i ett kluster som är reserverat för minnesfragmentering. När du anger det här värdet är Redis-serverupplevelsen mer konsekvent när cacheminnet är fullt eller nästan fullt och fragmenteringsförhållandet är högt. När minnet är reserverat för sådana åtgärder är det inte tillgängligt för lagring av cachelagrade data. Det tillåtna intervallet förmaxfragmentationmemory-reserved
är 10 % – 60 % avmaxmemory
. Om du försöker ange dessa värden som är lägre än 10 % eller högre än 60 %, utvärderas de på nytt och anges till minst 10 % och högst 60 %. Värdena återges i megabyte.En sak att tänka på när du väljer ett nytt minnesreservationsvärde (
maxmemory-reserved
ellermaxfragmentationmemory-reserved
) är hur den här ändringen kan påverka ett cacheminne med stora mängder data som redan körs. Om du till exempel har en cache på 53 GB med 49 GB data och sedan ändrar reservationsvärdet till 8 GB, sjunker det maximala tillgängliga minnet för systemet till 45 GB. Om dina aktuellaused_memory
eller dinaused_memory_rss
värden är högre än den nya gränsen på 45 GB måste systemet ta bort data tills bådaused_memory
ärused_memory_rss
under 45 GB. Borttagning kan öka serverbelastningen och minnesfragmenteringen. Mer information om cachemått somused_memory
och finns i Skapa egna måttused_memory_rss
.
Kommentar
När du skalar upp eller ned en cache skalas både maxmemory-reserved
och maxfragmentationmemory-reserved
inställningarna automatiskt i proportion till cachestorleken. Om maxmemory-reserved
det till exempel är inställt på 3 GB på en cache på 6 GB och du skalar till 12 GB cache uppdateras inställningarna automatiskt till 6 GB under skalningen. När du skalar ned sker det omvända.
När du skalar upp eller ned en cache programmatiskt med hjälp av PowerShell, CLI eller Rest API ignoreras alla maxmemory-reserved
eller maxfragmentationmemory-reserved
som en del av uppdateringsbegäran. Endast din skalningsändring respekteras. Du kan uppdatera dessa minnesinställningar när skalningsåtgärden har slutförts.