Dela via


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ör maxfragmentationmemory-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ör maxmemory-reserved är 10 % – 60 % av maxmemory. 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ör maxfragmentationmemory-reserved är 10 % – 60 % av maxmemory. 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 eller maxfragmentationmemory-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 aktuella used_memory eller dina used_memory_rss värden är högre än den nya gränsen på 45 GB måste systemet ta bort data tills båda used_memory är used_memory_rss under 45 GB. Borttagning kan öka serverbelastningen och minnesfragmenteringen. Mer information om cachemått som used_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.

Nästa steg