[{"data":1,"prerenderedAt":3086},["ShallowReactive",2],{"docs-page-en-\u002Fdocs\u002Fservices\u002Felasticache":3,"docs-navigation-en":2992,"docs-surround-en-\u002Fdocs\u002Fservices\u002Felasticache":3081},{"id":4,"title":5,"body":6,"claimDependencies":2974,"description":2978,"extension":2979,"locale":2980,"meta":2981,"missingMedia":2982,"navigation":941,"owner":2983,"path":2984,"reviewStatus":2985,"seo":2986,"staleLinks":2987,"stem":2988,"technicalRisk":2989,"translationKey":2990,"__hash__":2991},"docs_en\u002Fdocs\u002F5.services\u002F4.elasticache.md","ElastiCache Optimization",{"type":7,"value":8,"toc":2926},"minimark",[9,13,18,21,50,54,59,66,71,76,87,92,98,103,135,141,145,148,153,159,163,181,186,200,204,207,211,217,228,234,245,251,259,263,269,277,283,291,296,301,305,311,325,331,336,340,343,493,497,501,504,510,515,590,595,641,646,666,671,682,688,696,700,703,708,725,730,744,749,763,768,785,790,804,808,811,816,821,827,831,835,841,845,849,855,859,863,869,873,877,883,887,891,897,901,904,909,1288,1293,1521,1526,1706,1710,1714,1717,1783,1787,1792,1809,1814,1831,1835,1840,1851,1856,1873,1878,1892,1896,1900,1905,1919,1924,1935,1939,1943,1954,1958,1972,1976,1980,1991,1995,2009,2013,2017,2028,2032,2046,2050,2054,2068,2072,2086,2091,2095,2099,2104,2107,2121,2124,2135,2140,2143,2157,2162,2165,2182,2186,2191,2194,2205,2210,2229,2234,2236,2247,2251,2270,2275,2281,2283,2294,2298,2315,2320,2322,2333,2337,2356,2360,2364,2367,2381,2385,2388,2402,2406,2420,2424,2428,2433,2444,2449,2463,2467,2472,2480,2484,2495,2499,2504,2518,2523,2534,2538,2541,2613,2622,2626,2629,2634,2849,2855,2859,2862,2894,2897,2902,2922],[10,11,12],"p",{},"Jetscale provides AI-powered cost optimization for Amazon ElastiCache including both Redis and Memcached clusters. Our specialized agents analyze your caching workloads to identify right-sizing opportunities, node type migrations, and configuration improvements.",[14,15,17],"h2",{"id":16},"overview","Overview",[10,19,20],{},"Jetscale optimizes ElastiCache resources by analyzing:",[22,23,24,32,38,44],"ul",{},[25,26,27,31],"li",{},[28,29,30],"strong",{},"Node utilization",": CPU, memory, network, and connection patterns",[25,33,34,37],{},[28,35,36],{},"Cache performance",": Hit rates, eviction patterns, swap usage",[25,39,40,43],{},[28,41,42],{},"Cost analysis",": Current spending vs. optimal configuration",[25,45,46,49],{},[28,47,48],{},"High availability",": Multi-AZ configurations and replication topology",[14,51,53],{"id":52},"supported-elasticache-types","Supported ElastiCache Types",[55,56,58],"h3",{"id":57},"redis-clusters","Redis Clusters",[10,60,61,62,65],{},"Redis is our ",[28,63,64],{},"primary optimization target"," for feature-rich caching with persistence and replication.",[10,67,68],{},[28,69,70],{},"Cluster Modes:",[10,72,73],{},[28,74,75],{},"Redis Cluster Mode Disabled:",[77,78,83],"pre",{"className":79,"code":81,"language":82},[80],"language-text","ElastiCacheReplicationGroup (Optimization Target)\n├── CacheNode (Primary) - Billable\n├── CacheNode (Replica) - Billable\n└── CacheNode (Replica) - Billable\n","text",[84,85,81],"code",{"__ignoreMap":86},"",[10,88,89],{},[28,90,91],{},"Redis Cluster Mode Enabled:",[77,93,96],{"className":94,"code":95,"language":82},[80],"ElastiCacheReplicationGroup (Optimization Target)\n├── NodeGroup (Shard 1)\n│   ├── CacheNode (Primary) - Billable\n│   └── CacheNode (Replica) - Billable\n├── NodeGroup (Shard 2)\n│   ├── CacheNode (Primary) - Billable\n│   └── CacheNode (Replica) - Billable\n",[84,97,95],{"__ignoreMap":86},[10,99,100],{},[28,101,102],{},"What We Optimize:",[22,104,105,111,117,123,129],{},[25,106,107,110],{},[28,108,109],{},"Node type right-sizing",": Match actual memory and CPU workload (all nodes in cluster use same type)",[25,112,113,116],{},[28,114,115],{},"Graviton migration",": Switch to ARM-based instances (r7g, m7g, r6g, m6g) for 10-40% savings",[25,118,119,122],{},[28,120,121],{},"Engine version upgrades",": Recommend latest Redis versions for performance and features",[25,124,125,128],{},[28,126,127],{},"Multi-AZ configuration",": Disable Multi-AZ for ~50% savings when high availability isn't critical",[25,130,131,134],{},[28,132,133],{},"Reserved node recommendations",": Up to 55% savings with 1-year or 3-year commitment",[10,136,137,140],{},[28,138,139],{},"Important:"," All nodes in a Redis cluster must use the same node type. Jetscale sizes for the node with highest resource usage to ensure adequate performance across all cluster members.",[55,142,144],{"id":143},"memcached-clusters","Memcached Clusters",[10,146,147],{},"Traditional Memcached clusters are optimized as a collection of independent nodes.",[10,149,150],{},[28,151,152],{},"Cluster Architecture:",[77,154,157],{"className":155,"code":156,"language":82},[80],"ElastiCacheCluster (Optimization Target)\n├── CacheNode - Billable\n├── CacheNode - Billable\n└── CacheNode - Billable\n",[84,158,156],{"__ignoreMap":86},[10,160,161],{},[28,162,102],{},[22,164,165,170,175],{},[25,166,167,169],{},[28,168,109],{},": Match memory and CPU to workload",[25,171,172,174],{},[28,173,115],{},": Switch to ARM-based instances (m7g, m6g) for 10-40% savings",[25,176,177,180],{},[28,178,179],{},"Node count optimization",": Adjust number of nodes based on actual usage",[10,182,183],{},[28,184,185],{},"Key Differences from Redis:",[22,187,188,191,194,197],{},[25,189,190],{},"No replication (each node is independent)",[25,192,193],{},"No persistence (purely in-memory)",[25,195,196],{},"Simpler scaling model (add\u002Fremove nodes)",[25,198,199],{},"Generally lower cost than Redis",[14,201,203],{"id":202},"elasticache-node-types","ElastiCache Node Types",[10,205,206],{},"Jetscale considers all AWS ElastiCache node types when optimizing:",[55,208,210],{"id":209},"memory-optimized-r-family","Memory Optimized (R-family)",[10,212,213,216],{},[28,214,215],{},"R7g (Graviton3)"," - Latest generation, ARM-based",[22,218,219,222,225],{},[25,220,221],{},"Best price\u002Fperformance ratio",[25,223,224],{},"40% better price\u002Fperformance than R6g",[25,226,227],{},"Use for: Redis with high memory needs, low-latency caching",[10,229,230,233],{},[28,231,232],{},"R6g (Graviton2)"," - Previous ARM generation",[22,235,236,239,242],{},[25,237,238],{},"20% cost savings vs. R5",[25,240,241],{},"Excellent performance",[25,243,244],{},"Use for: Redis requiring large memory footprint",[10,246,247,250],{},[28,248,249],{},"R5"," - Intel-based",[22,252,253,256],{},[25,254,255],{},"Legacy option (migrate to R6g\u002FR7g for savings)",[25,257,258],{},"Use for: x86-specific requirements (rare)",[55,260,262],{"id":261},"general-purpose-m-family","General Purpose (M-family)",[10,264,265,268],{},[28,266,267],{},"M7g (Graviton3)"," - Latest generation, balanced",[22,270,271,274],{},[25,272,273],{},"Best for workloads with balanced CPU and memory needs",[25,275,276],{},"40% better price\u002Fperformance than M6g",[10,278,279,282],{},[28,280,281],{},"M6g (Graviton2)"," - ARM-based",[22,284,285,288],{},[25,286,287],{},"20% cost savings vs. M5",[25,289,290],{},"Use for: Balanced Redis\u002FMemcached workloads",[10,292,293,250],{},[28,294,295],{},"M5",[22,297,298],{},[25,299,300],{},"Legacy option (migrate to M6g\u002FM7g)",[55,302,304],{"id":303},"burstable-t-family","Burstable (T-family)",[10,306,307,310],{},[28,308,309],{},"T4g (Graviton2)"," - Low-cost burstable",[22,312,313,316,319,322],{},[25,314,315],{},"Use for: Development, testing, small caches",[25,317,318],{},"Baseline CPU with burst credits",[25,320,321],{},"Lowest cost option",[25,323,324],{},"Caution: Monitor CPU credit balance",[10,326,327,330],{},[28,328,329],{},"T3"," - Intel-based burstable",[22,332,333],{},[25,334,335],{},"Legacy option (migrate to T4g)",[55,337,339],{"id":338},"node-sizing","Node Sizing",[10,341,342],{},"Each node type comes in multiple sizes:",[344,345,346,365],"table",{},[347,348,349],"thead",{},[350,351,352,356,359,362],"tr",{},[353,354,355],"th",{},"Size",[353,357,358],{},"Example (R7g)",[353,360,361],{},"vCPUs",[353,363,364],{},"Memory",[366,367,368,383,396,409,423,437,451,465,479],"tbody",{},[350,369,370,374,377,380],{},[371,372,373],"td",{},"small",[371,375,376],{},"cache.r7g.small",[371,378,379],{},"1",[371,381,382],{},"1.5 GB",[350,384,385,388,391,393],{},[371,386,387],{},"medium",[371,389,390],{},"cache.r7g.medium",[371,392,379],{},[371,394,395],{},"3.1 GB",[350,397,398,401,404,406],{},[371,399,400],{},"large",[371,402,403],{},"cache.r7g.large",[371,405,379],{},[371,407,408],{},"6.4 GB",[350,410,411,414,417,420],{},[371,412,413],{},"xlarge",[371,415,416],{},"cache.r7g.xlarge",[371,418,419],{},"2",[371,421,422],{},"13.1 GB",[350,424,425,428,431,434],{},[371,426,427],{},"2xlarge",[371,429,430],{},"cache.r7g.2xlarge",[371,432,433],{},"4",[371,435,436],{},"26.3 GB",[350,438,439,442,445,448],{},[371,440,441],{},"4xlarge",[371,443,444],{},"cache.r7g.4xlarge",[371,446,447],{},"8",[371,449,450],{},"52.8 GB",[350,452,453,456,459,462],{},[371,454,455],{},"8xlarge",[371,457,458],{},"cache.r7g.8xlarge",[371,460,461],{},"16",[371,463,464],{},"105.8 GB",[350,466,467,470,473,476],{},[371,468,469],{},"12xlarge",[371,471,472],{},"cache.r7g.12xlarge",[371,474,475],{},"24",[371,477,478],{},"159.0 GB",[350,480,481,484,487,490],{},[371,482,483],{},"16xlarge",[371,485,486],{},"cache.r7g.16xlarge",[371,488,489],{},"32",[371,491,492],{},"212.2 GB",[14,494,496],{"id":495},"how-jetscale-optimizes-elasticache","How Jetscale Optimizes ElastiCache",[55,498,500],{"id":499},"_1-data-collection","1. Data Collection",[10,502,503],{},"Jetscale analyzes multiple data sources:",[10,505,506,509],{},[28,507,508],{},"CloudWatch Metrics"," (14-day rolling window):",[10,511,512],{},[28,513,514],{},"Redis Metrics:",[22,516,517,523,529,535,541,551,560,566,572,578,584],{},[25,518,519,522],{},[84,520,521],{},"CPUUtilization"," - Node CPU usage",[25,524,525,528],{},[84,526,527],{},"DatabaseMemoryUsagePercentage"," - Memory used for data",[25,530,531,534],{},[84,532,533],{},"BytesUsedForCache"," - Actual cache data size",[25,536,537,540],{},[84,538,539],{},"FreeableMemory"," - Available memory",[25,542,543,546,547,550],{},[84,544,545],{},"NetworkBytesIn"," \u002F ",[84,548,549],{},"NetworkBytesOut"," - Network throughput",[25,552,553,546,556,559],{},[84,554,555],{},"CacheHits",[84,557,558],{},"CacheMisses"," - Cache efficiency",[25,561,562,565],{},[84,563,564],{},"CurrConnections"," - Active connections",[25,567,568,571],{},[84,569,570],{},"SwapUsage"," - Memory pressure indicator (should be zero)",[25,573,574,577],{},[84,575,576],{},"EngineCPUUtilization"," - Redis process CPU (key metric)",[25,579,580,583],{},[84,581,582],{},"Evictions"," - Items evicted due to memory pressure",[25,585,586,589],{},[84,587,588],{},"ReplicationLag"," - Replica lag time",[10,591,592],{},[28,593,594],{},"Memcached Metrics:",[22,596,597,601,607,611,617,621,625,633],{},[25,598,599,522],{},[84,600,521],{},[25,602,603,606],{},[84,604,605],{},"BytesUsedForCacheItems"," - Memory used for items",[25,608,609,540],{},[84,610,539],{},[25,612,613,546,615,550],{},[84,614,545],{},[84,616,549],{},[25,618,619,565],{},[84,620,564],{},[25,622,623,583],{},[84,624,582],{},[25,626,627,546,630,559],{},[84,628,629],{},"GetHits",[84,631,632],{},"GetMisses",[25,634,635,546,638],{},[84,636,637],{},"BytesReadIntoMemcached",[84,639,640],{},"BytesWrittenOutFromMemcached",[10,642,643],{},[28,644,645],{},"ElastiCache API Data:",[22,647,648,651,654,657,660,663],{},[25,649,650],{},"Node type and engine version",[25,652,653],{},"Number of nodes\u002Fshards",[25,655,656],{},"Multi-AZ status",[25,658,659],{},"Automatic failover configuration",[25,661,662],{},"Parameter group configuration",[25,664,665],{},"Maintenance window settings",[10,667,668],{},[28,669,670],{},"Cost Explorer Data:",[22,672,673,676,679],{},[25,674,675],{},"Current monthly spend per cluster",[25,677,678],{},"Historical cost trends",[25,680,681],{},"Reserved node utilization",[10,683,684,687],{},[28,685,686],{},"AWS Compute Optimizer"," (if enabled):",[22,689,690,693],{},[25,691,692],{},"AWS-generated right-sizing recommendations",[25,694,695],{},"Performance risk assessments",[55,697,699],{"id":698},"_2-analysis","2. Analysis",[10,701,702],{},"Our AI agents perform deep analysis:",[10,704,705],{},[28,706,707],{},"Memory Utilization:",[22,709,710,713,716,719,722],{},[25,711,712],{},"Peak vs. average memory usage",[25,714,715],{},"Eviction patterns (indicates memory pressure)",[25,717,718],{},"Swap usage (critical indicator - should be zero)",[25,720,721],{},"Memory fragmentation patterns",[25,723,724],{},"Headroom calculation for safe downsizing",[10,726,727],{},[28,728,729],{},"CPU Utilization:",[22,731,732,735,738,741],{},[25,733,734],{},"Engine CPU vs. total CPU (Redis)",[25,736,737],{},"Peak vs. average CPU usage",[25,739,740],{},"CPU credit balance (T-family instances)",[25,742,743],{},"Time-of-day patterns",[10,745,746],{},[28,747,748],{},"Cache Performance:",[22,750,751,754,757,760],{},[25,752,753],{},"Cache hit rate (target: >95% for healthy cache)",[25,755,756],{},"Eviction rate (indicates insufficient memory)",[25,758,759],{},"Connection patterns",[25,761,762],{},"Network saturation points",[10,764,765],{},[28,766,767],{},"Cost Modeling:",[22,769,770,773,776,779,782],{},[25,771,772],{},"Current cost breakdown (compute, data transfer)",[25,774,775],{},"Projected cost for alternative configurations",[25,777,778],{},"Reserved node opportunities",[25,780,781],{},"Multi-AZ premium analysis",[25,783,784],{},"Graviton migration savings",[10,786,787],{},[28,788,789],{},"Risk Evaluation:",[22,791,792,795,798,801],{},[25,793,794],{},"Headroom calculation (20% buffer above peak recommended)",[25,796,797],{},"Performance degradation probability",[25,799,800],{},"Availability impact assessment",[25,802,803],{},"Failover capability impact",[55,805,807],{"id":806},"_3-recommendations","3. Recommendations",[10,809,810],{},"Jetscale generates specific, actionable recommendations:",[812,813,815],"h4",{"id":814},"node-type-right-sizing","Node Type Right-Sizing",[10,817,818],{},[28,819,820],{},"Example Recommendation:",[77,822,825],{"className":823,"code":824,"language":82},[80],"Resource: production-redis-cache\nCurrent: 2x cache.r5.xlarge (13.1 GB RAM each, 4 vCPUs)\nRecommended: 2x cache.r5.large (6.4 GB RAM each, 2 vCPUs)\n\nCost Impact:\n- Current: $500\u002Fmonth\n- Projected: $250\u002Fmonth\n- Savings: $250\u002Fmonth (50%), $3,000\u002Fyear\n\nPerformance Analysis:\n- Peak memory usage: 40% (5.2 GB per node)\n- Average memory usage: 30% (3.9 GB per node)\n- Peak CPU: 25%\n- Cache hit rate: 97.5%\n- No evictions detected\n- Recommended provides 23% headroom above peak\n\nRisk: Low - Adequate headroom maintained, no memory pressure\n",[84,826,824],{"__ignoreMap":86},[812,828,830],{"id":829},"graviton-migration-redis","Graviton Migration (Redis)",[10,832,833],{},[28,834,820],{},[77,836,839],{"className":837,"code":838,"language":82},[80],"Resource: api-cache-cluster\nCurrent: 3x cache.r5.large (Intel-based)\nRecommended: 3x cache.r6g.large (Graviton2-based)\n\nCost Impact:\n- Current: $375\u002Fmonth (3 nodes @ $125\u002Fmonth each)\n- Projected: $300\u002Fmonth (3 nodes @ $100\u002Fmonth each)\n- Savings: $75\u002Fmonth (20%), $900\u002Fyear\n\nPerformance Analysis:\n- Same memory: 6.4 GB per node\n- Same vCPUs: 2 per node\n- Graviton2 offers equivalent or better performance\n- Redis 6.2+ fully compatible with ARM64\n- No application changes required\n\nRisk: Very Low - Proven Graviton performance with Redis\nNote: Requires engine version 5.0.6+ for Graviton support\n",[84,840,838],{"__ignoreMap":86},[812,842,844],{"id":843},"multi-az-optimization","Multi-AZ Optimization",[10,846,847],{},[28,848,820],{},[77,850,853],{"className":851,"code":852,"language":82},[80],"Resource: staging-memcached-cluster\nCurrent: 4x cache.m5.large with Multi-AZ enabled\nRecommended: 4x cache.m5.large with Multi-AZ disabled\n\nCost Impact:\n- Current: $480\u002Fmonth (Multi-AZ premium included)\n- Projected: $240\u002Fmonth (Single-AZ)\n- Savings: $240\u002Fmonth (50%), $2,880\u002Fyear\n\nAvailability Analysis:\n- Environment: Staging\u002FNon-Production\n- Current: Multi-AZ (automatic failover)\n- Projected: Single-AZ (manual recovery)\n- Acceptable for staging workload\n- RPO\u002FRTO: Tolerable for non-production\n\nRisk: Low - Non-production environment\nNote: Multi-AZ provides automatic failover within minutes\n",[84,854,852],{"__ignoreMap":86},[812,856,858],{"id":857},"engine-version-upgrade","Engine Version Upgrade",[10,860,861],{},[28,862,820],{},[77,864,867],{"className":865,"code":866,"language":82},[80],"Resource: legacy-redis-cache\nCurrent: 3x cache.r5.large, Redis 5.0.6\nRecommended: 3x cache.r5.large, Redis 7.0\n\nCost Impact:\n- Current: $375\u002Fmonth\n- Projected: $375\u002Fmonth (same cost)\n- Savings: $0\u002Fmonth (performance and security improvements)\n\nBenefits:\n- Redis 7.0 features: Functions, ACL improvements, Redis Streams enhancements\n- Better memory efficiency (5-10% reduction in memory overhead)\n- Improved replication performance\n- Security patches and bug fixes\n- Same cost, better performance\n\nRisk: Low - Backward compatible, test in staging first\nNote: Review Redis 7.0 breaking changes documentation\n",[84,868,866],{"__ignoreMap":86},[812,870,872],{"id":871},"reserved-node-recommendations","Reserved Node Recommendations",[10,874,875],{},[28,876,820],{},[77,878,881],{"className":879,"code":880,"language":82},[80],"Resource: production-redis-primary\nCurrent: 2x cache.r6g.xlarge, On-Demand pricing\nRecommended: 2x cache.r6g.xlarge, 1-Year Reserved (No Upfront)\n\nCost Impact:\n- Current: $600\u002Fmonth (On-Demand)\n- Projected: $420\u002Fmonth (Reserved)\n- Savings: $180\u002Fmonth (30%), $2,160\u002Fyear\n\nAnalysis:\n- Cluster age: 18 months (proven stable workload)\n- Utilization: 24\u002F7 production cache\n- Reserved term: 1-Year No Upfront\n- Break-even: Immediate (monthly savings)\n- Commitment: Can sell unused reservations on marketplace\n\nRisk: Very Low - Stable long-running workload\nNote: 3-Year Reserved offers 55% savings ($270\u002Fmonth, $390\u002Fmonth savings)\n",[84,882,880],{"__ignoreMap":86},[812,884,886],{"id":885},"memcached-node-count-optimization","Memcached Node Count Optimization",[10,888,889],{},[28,890,820],{},[77,892,895],{"className":893,"code":894,"language":82},[80],"Resource: session-cache-memcached\nCurrent: 6x cache.m5.large (16 GB total capacity)\nRecommended: 4x cache.m5.large (16 GB total capacity by using larger nodes)\nAlternative: 4x cache.m6g.xlarge (same total memory, Graviton2)\n\nCost Impact (Alternative):\n- Current: $720\u002Fmonth (6 nodes @ $120\u002Fmonth)\n- Projected: $640\u002Fmonth (4 nodes @ $160\u002Fmonth)\n- Savings: $80\u002Fmonth (11%), $960\u002Fyear\n\nPerformance Analysis:\n- Total memory needed: 12 GB (peak)\n- Current distribution: 2 GB per node average\n- Recommended: 3 GB per node average\n- Fewer nodes = reduced operational complexity\n- Network performance per node is higher\n\nRisk: Low - Same total capacity, better efficiency\nNote: Test connection pooling with fewer nodes\n",[84,896,894],{"__ignoreMap":86},[55,898,900],{"id":899},"_4-terraform-generation","4. Terraform Generation",[10,902,903],{},"For each recommendation, Jetscale generates production-ready Terraform code:",[10,905,906],{},[28,907,908],{},"Example: Redis Right-Sizing",[77,910,914],{"className":911,"code":912,"language":913,"meta":86,"style":86},"language-hcl shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# ElastiCache Redis Optimization\n# Generated by Jetscale on 2024-01-15\n# Recommendation ID: rec_elasticache_001\n\nresource \"aws_elasticache_replication_group\" \"production_redis\" {\n  replication_group_id       = \"production-redis-cache\"\n  replication_group_description = \"Production Redis cache\"\n\n  # Previous: cache.r5.xlarge ($500\u002Fmonth)\n  # Optimized: cache.r5.large ($250\u002Fmonth)\n  # Cost Reduction: 50% ($250\u002Fmonth, $3,000\u002Fyear)\n  #\n  # Justification:\n  # - Peak memory usage: 40% (5.2 GB per node)\n  # - Average memory usage: 30% (3.9 GB per node)\n  # - Peak CPU: 25%\n  # - Cache hit rate: 97.5%\n  # - New node type provides 23% headroom above peak\n  # - No evictions or swap usage detected\n  node_type = \"cache.r5.large\"\n\n  engine         = \"redis\"\n  engine_version = \"7.0\"\n\n  # Cluster configuration\n  num_cache_clusters         = 2\n  automatic_failover_enabled = true\n  multi_az_enabled          = true\n\n  # Network configuration\n  subnet_group_name  = var.subnet_group_name\n  security_group_ids = var.security_group_ids\n\n  # Maintenance and backup\n  maintenance_window         = \"sun:05:00-sun:06:00\"\n  snapshot_window           = \"03:00-04:00\"\n  snapshot_retention_limit  = 5\n\n  # Parameter group for configuration\n  parameter_group_name = var.parameter_group_name\n\n  # Encryption\n  at_rest_encryption_enabled = true\n  transit_encryption_enabled = true\n  auth_token_enabled        = true\n\n  # Logging\n  log_delivery_configuration {\n    destination      = var.cloudwatch_log_group\n    destination_type = \"cloudwatch-logs\"\n    log_format       = \"json\"\n    log_type         = \"slow-log\"\n  }\n\n  tags = merge(\n    var.tags,\n    {\n      \"jetscale:optimized\"      = \"true\"\n      \"jetscale:recommendation\" = \"rec_elasticache_001\"\n      \"jetscale:previous_type\"  = \"cache.r5.xlarge\"\n    }\n  )\n}\n","hcl",[84,915,916,924,930,936,943,949,955,961,966,972,978,984,990,996,1002,1008,1014,1020,1026,1032,1038,1043,1049,1055,1060,1066,1072,1078,1084,1089,1095,1101,1107,1112,1118,1124,1130,1136,1141,1147,1153,1158,1164,1170,1176,1182,1187,1193,1199,1205,1211,1217,1223,1229,1234,1240,1246,1252,1258,1264,1270,1276,1282],{"__ignoreMap":86},[917,918,921],"span",{"class":919,"line":920},"line",1,[917,922,923],{},"# ElastiCache Redis Optimization\n",[917,925,927],{"class":919,"line":926},2,[917,928,929],{},"# Generated by Jetscale on 2024-01-15\n",[917,931,933],{"class":919,"line":932},3,[917,934,935],{},"# Recommendation ID: rec_elasticache_001\n",[917,937,939],{"class":919,"line":938},4,[917,940,942],{"emptyLinePlaceholder":941},true,"\n",[917,944,946],{"class":919,"line":945},5,[917,947,948],{},"resource \"aws_elasticache_replication_group\" \"production_redis\" {\n",[917,950,952],{"class":919,"line":951},6,[917,953,954],{},"  replication_group_id       = \"production-redis-cache\"\n",[917,956,958],{"class":919,"line":957},7,[917,959,960],{},"  replication_group_description = \"Production Redis cache\"\n",[917,962,964],{"class":919,"line":963},8,[917,965,942],{"emptyLinePlaceholder":941},[917,967,969],{"class":919,"line":968},9,[917,970,971],{},"  # Previous: cache.r5.xlarge ($500\u002Fmonth)\n",[917,973,975],{"class":919,"line":974},10,[917,976,977],{},"  # Optimized: cache.r5.large ($250\u002Fmonth)\n",[917,979,981],{"class":919,"line":980},11,[917,982,983],{},"  # Cost Reduction: 50% ($250\u002Fmonth, $3,000\u002Fyear)\n",[917,985,987],{"class":919,"line":986},12,[917,988,989],{},"  #\n",[917,991,993],{"class":919,"line":992},13,[917,994,995],{},"  # Justification:\n",[917,997,999],{"class":919,"line":998},14,[917,1000,1001],{},"  # - Peak memory usage: 40% (5.2 GB per node)\n",[917,1003,1005],{"class":919,"line":1004},15,[917,1006,1007],{},"  # - Average memory usage: 30% (3.9 GB per node)\n",[917,1009,1011],{"class":919,"line":1010},16,[917,1012,1013],{},"  # - Peak CPU: 25%\n",[917,1015,1017],{"class":919,"line":1016},17,[917,1018,1019],{},"  # - Cache hit rate: 97.5%\n",[917,1021,1023],{"class":919,"line":1022},18,[917,1024,1025],{},"  # - New node type provides 23% headroom above peak\n",[917,1027,1029],{"class":919,"line":1028},19,[917,1030,1031],{},"  # - No evictions or swap usage detected\n",[917,1033,1035],{"class":919,"line":1034},20,[917,1036,1037],{},"  node_type = \"cache.r5.large\"\n",[917,1039,1041],{"class":919,"line":1040},21,[917,1042,942],{"emptyLinePlaceholder":941},[917,1044,1046],{"class":919,"line":1045},22,[917,1047,1048],{},"  engine         = \"redis\"\n",[917,1050,1052],{"class":919,"line":1051},23,[917,1053,1054],{},"  engine_version = \"7.0\"\n",[917,1056,1058],{"class":919,"line":1057},24,[917,1059,942],{"emptyLinePlaceholder":941},[917,1061,1063],{"class":919,"line":1062},25,[917,1064,1065],{},"  # Cluster configuration\n",[917,1067,1069],{"class":919,"line":1068},26,[917,1070,1071],{},"  num_cache_clusters         = 2\n",[917,1073,1075],{"class":919,"line":1074},27,[917,1076,1077],{},"  automatic_failover_enabled = true\n",[917,1079,1081],{"class":919,"line":1080},28,[917,1082,1083],{},"  multi_az_enabled          = true\n",[917,1085,1087],{"class":919,"line":1086},29,[917,1088,942],{"emptyLinePlaceholder":941},[917,1090,1092],{"class":919,"line":1091},30,[917,1093,1094],{},"  # Network configuration\n",[917,1096,1098],{"class":919,"line":1097},31,[917,1099,1100],{},"  subnet_group_name  = var.subnet_group_name\n",[917,1102,1104],{"class":919,"line":1103},32,[917,1105,1106],{},"  security_group_ids = var.security_group_ids\n",[917,1108,1110],{"class":919,"line":1109},33,[917,1111,942],{"emptyLinePlaceholder":941},[917,1113,1115],{"class":919,"line":1114},34,[917,1116,1117],{},"  # Maintenance and backup\n",[917,1119,1121],{"class":919,"line":1120},35,[917,1122,1123],{},"  maintenance_window         = \"sun:05:00-sun:06:00\"\n",[917,1125,1127],{"class":919,"line":1126},36,[917,1128,1129],{},"  snapshot_window           = \"03:00-04:00\"\n",[917,1131,1133],{"class":919,"line":1132},37,[917,1134,1135],{},"  snapshot_retention_limit  = 5\n",[917,1137,1139],{"class":919,"line":1138},38,[917,1140,942],{"emptyLinePlaceholder":941},[917,1142,1144],{"class":919,"line":1143},39,[917,1145,1146],{},"  # Parameter group for configuration\n",[917,1148,1150],{"class":919,"line":1149},40,[917,1151,1152],{},"  parameter_group_name = var.parameter_group_name\n",[917,1154,1156],{"class":919,"line":1155},41,[917,1157,942],{"emptyLinePlaceholder":941},[917,1159,1161],{"class":919,"line":1160},42,[917,1162,1163],{},"  # Encryption\n",[917,1165,1167],{"class":919,"line":1166},43,[917,1168,1169],{},"  at_rest_encryption_enabled = true\n",[917,1171,1173],{"class":919,"line":1172},44,[917,1174,1175],{},"  transit_encryption_enabled = true\n",[917,1177,1179],{"class":919,"line":1178},45,[917,1180,1181],{},"  auth_token_enabled        = true\n",[917,1183,1185],{"class":919,"line":1184},46,[917,1186,942],{"emptyLinePlaceholder":941},[917,1188,1190],{"class":919,"line":1189},47,[917,1191,1192],{},"  # Logging\n",[917,1194,1196],{"class":919,"line":1195},48,[917,1197,1198],{},"  log_delivery_configuration {\n",[917,1200,1202],{"class":919,"line":1201},49,[917,1203,1204],{},"    destination      = var.cloudwatch_log_group\n",[917,1206,1208],{"class":919,"line":1207},50,[917,1209,1210],{},"    destination_type = \"cloudwatch-logs\"\n",[917,1212,1214],{"class":919,"line":1213},51,[917,1215,1216],{},"    log_format       = \"json\"\n",[917,1218,1220],{"class":919,"line":1219},52,[917,1221,1222],{},"    log_type         = \"slow-log\"\n",[917,1224,1226],{"class":919,"line":1225},53,[917,1227,1228],{},"  }\n",[917,1230,1232],{"class":919,"line":1231},54,[917,1233,942],{"emptyLinePlaceholder":941},[917,1235,1237],{"class":919,"line":1236},55,[917,1238,1239],{},"  tags = merge(\n",[917,1241,1243],{"class":919,"line":1242},56,[917,1244,1245],{},"    var.tags,\n",[917,1247,1249],{"class":919,"line":1248},57,[917,1250,1251],{},"    {\n",[917,1253,1255],{"class":919,"line":1254},58,[917,1256,1257],{},"      \"jetscale:optimized\"      = \"true\"\n",[917,1259,1261],{"class":919,"line":1260},59,[917,1262,1263],{},"      \"jetscale:recommendation\" = \"rec_elasticache_001\"\n",[917,1265,1267],{"class":919,"line":1266},60,[917,1268,1269],{},"      \"jetscale:previous_type\"  = \"cache.r5.xlarge\"\n",[917,1271,1273],{"class":919,"line":1272},61,[917,1274,1275],{},"    }\n",[917,1277,1279],{"class":919,"line":1278},62,[917,1280,1281],{},"  )\n",[917,1283,1285],{"class":919,"line":1284},63,[917,1286,1287],{},"}\n",[10,1289,1290],{},[28,1291,1292],{},"Example: Graviton Migration",[77,1294,1296],{"className":911,"code":1295,"language":913,"meta":86,"style":86},"# ElastiCache Graviton Migration\n# Generated by Jetscale on 2024-01-15\n\nresource \"aws_elasticache_replication_group\" \"api_cache_graviton\" {\n  replication_group_id       = \"api-cache-cluster\"\n  replication_group_description = \"API response cache - Graviton2\"\n\n  # Previous: cache.r5.large (Intel, $125\u002Fmonth per node)\n  # Optimized: cache.r6g.large (Graviton2, $100\u002Fmonth per node)\n  # Cost Reduction: 20% ($75\u002Fmonth total, $900\u002Fyear)\n  #\n  # Performance:\n  # - Same memory: 6.4 GB RAM\n  # - Same vCPUs: 2 per node\n  # - Graviton2 offers equivalent or better performance\n  # - 20% cost savings with no performance trade-off\n  #\n  # Requirements:\n  # - Redis engine 5.0.6+ for Graviton support\n  # - No application changes required\n  node_type = \"cache.r6g.large\"\n\n  engine         = \"redis\"\n  engine_version = \"7.0\"\n\n  num_cache_clusters         = 3\n  automatic_failover_enabled = true\n  multi_az_enabled          = true\n\n  subnet_group_name  = var.subnet_group_name\n  security_group_ids = var.security_group_ids\n\n  maintenance_window        = \"sun:05:00-sun:06:00\"\n  snapshot_window          = \"03:00-04:00\"\n  snapshot_retention_limit = 7\n\n  parameter_group_name = var.parameter_group_name\n\n  at_rest_encryption_enabled = true\n  transit_encryption_enabled = true\n\n  tags = merge(\n    var.tags,\n    {\n      \"jetscale:optimized\"    = \"true\"\n      \"jetscale:architecture\" = \"arm64\"\n      \"jetscale:processor\"    = \"graviton2\"\n    }\n  )\n}\n",[84,1297,1298,1303,1307,1311,1316,1321,1326,1330,1335,1340,1345,1349,1354,1359,1364,1369,1374,1378,1383,1388,1393,1398,1402,1406,1410,1414,1419,1423,1427,1431,1435,1439,1443,1448,1453,1458,1462,1466,1470,1474,1478,1482,1486,1490,1494,1499,1504,1509,1513,1517],{"__ignoreMap":86},[917,1299,1300],{"class":919,"line":920},[917,1301,1302],{},"# ElastiCache Graviton Migration\n",[917,1304,1305],{"class":919,"line":926},[917,1306,929],{},[917,1308,1309],{"class":919,"line":932},[917,1310,942],{"emptyLinePlaceholder":941},[917,1312,1313],{"class":919,"line":938},[917,1314,1315],{},"resource \"aws_elasticache_replication_group\" \"api_cache_graviton\" {\n",[917,1317,1318],{"class":919,"line":945},[917,1319,1320],{},"  replication_group_id       = \"api-cache-cluster\"\n",[917,1322,1323],{"class":919,"line":951},[917,1324,1325],{},"  replication_group_description = \"API response cache - Graviton2\"\n",[917,1327,1328],{"class":919,"line":957},[917,1329,942],{"emptyLinePlaceholder":941},[917,1331,1332],{"class":919,"line":963},[917,1333,1334],{},"  # Previous: cache.r5.large (Intel, $125\u002Fmonth per node)\n",[917,1336,1337],{"class":919,"line":968},[917,1338,1339],{},"  # Optimized: cache.r6g.large (Graviton2, $100\u002Fmonth per node)\n",[917,1341,1342],{"class":919,"line":974},[917,1343,1344],{},"  # Cost Reduction: 20% ($75\u002Fmonth total, $900\u002Fyear)\n",[917,1346,1347],{"class":919,"line":980},[917,1348,989],{},[917,1350,1351],{"class":919,"line":986},[917,1352,1353],{},"  # Performance:\n",[917,1355,1356],{"class":919,"line":992},[917,1357,1358],{},"  # - Same memory: 6.4 GB RAM\n",[917,1360,1361],{"class":919,"line":998},[917,1362,1363],{},"  # - Same vCPUs: 2 per node\n",[917,1365,1366],{"class":919,"line":1004},[917,1367,1368],{},"  # - Graviton2 offers equivalent or better performance\n",[917,1370,1371],{"class":919,"line":1010},[917,1372,1373],{},"  # - 20% cost savings with no performance trade-off\n",[917,1375,1376],{"class":919,"line":1016},[917,1377,989],{},[917,1379,1380],{"class":919,"line":1022},[917,1381,1382],{},"  # Requirements:\n",[917,1384,1385],{"class":919,"line":1028},[917,1386,1387],{},"  # - Redis engine 5.0.6+ for Graviton support\n",[917,1389,1390],{"class":919,"line":1034},[917,1391,1392],{},"  # - No application changes required\n",[917,1394,1395],{"class":919,"line":1040},[917,1396,1397],{},"  node_type = \"cache.r6g.large\"\n",[917,1399,1400],{"class":919,"line":1045},[917,1401,942],{"emptyLinePlaceholder":941},[917,1403,1404],{"class":919,"line":1051},[917,1405,1048],{},[917,1407,1408],{"class":919,"line":1057},[917,1409,1054],{},[917,1411,1412],{"class":919,"line":1062},[917,1413,942],{"emptyLinePlaceholder":941},[917,1415,1416],{"class":919,"line":1068},[917,1417,1418],{},"  num_cache_clusters         = 3\n",[917,1420,1421],{"class":919,"line":1074},[917,1422,1077],{},[917,1424,1425],{"class":919,"line":1080},[917,1426,1083],{},[917,1428,1429],{"class":919,"line":1086},[917,1430,942],{"emptyLinePlaceholder":941},[917,1432,1433],{"class":919,"line":1091},[917,1434,1100],{},[917,1436,1437],{"class":919,"line":1097},[917,1438,1106],{},[917,1440,1441],{"class":919,"line":1103},[917,1442,942],{"emptyLinePlaceholder":941},[917,1444,1445],{"class":919,"line":1109},[917,1446,1447],{},"  maintenance_window        = \"sun:05:00-sun:06:00\"\n",[917,1449,1450],{"class":919,"line":1114},[917,1451,1452],{},"  snapshot_window          = \"03:00-04:00\"\n",[917,1454,1455],{"class":919,"line":1120},[917,1456,1457],{},"  snapshot_retention_limit = 7\n",[917,1459,1460],{"class":919,"line":1126},[917,1461,942],{"emptyLinePlaceholder":941},[917,1463,1464],{"class":919,"line":1132},[917,1465,1152],{},[917,1467,1468],{"class":919,"line":1138},[917,1469,942],{"emptyLinePlaceholder":941},[917,1471,1472],{"class":919,"line":1143},[917,1473,1169],{},[917,1475,1476],{"class":919,"line":1149},[917,1477,1175],{},[917,1479,1480],{"class":919,"line":1155},[917,1481,942],{"emptyLinePlaceholder":941},[917,1483,1484],{"class":919,"line":1160},[917,1485,1239],{},[917,1487,1488],{"class":919,"line":1166},[917,1489,1245],{},[917,1491,1492],{"class":919,"line":1172},[917,1493,1251],{},[917,1495,1496],{"class":919,"line":1178},[917,1497,1498],{},"      \"jetscale:optimized\"    = \"true\"\n",[917,1500,1501],{"class":919,"line":1184},[917,1502,1503],{},"      \"jetscale:architecture\" = \"arm64\"\n",[917,1505,1506],{"class":919,"line":1189},[917,1507,1508],{},"      \"jetscale:processor\"    = \"graviton2\"\n",[917,1510,1511],{"class":919,"line":1195},[917,1512,1275],{},[917,1514,1515],{"class":919,"line":1201},[917,1516,1281],{},[917,1518,1519],{"class":919,"line":1207},[917,1520,1287],{},[10,1522,1523],{},[28,1524,1525],{},"Example: Memcached Optimization",[77,1527,1529],{"className":911,"code":1528,"language":913,"meta":86,"style":86},"# ElastiCache Memcached Optimization\n# Generated by Jetscale on 2024-01-15\n\nresource \"aws_elasticache_cluster\" \"session_cache\" {\n  cluster_id = \"session-cache-memcached\"\n\n  # Previous: 6x cache.m5.large ($720\u002Fmonth)\n  # Optimized: 4x cache.m6g.xlarge ($640\u002Fmonth)\n  # Cost Reduction: 11% ($80\u002Fmonth, $960\u002Fyear)\n  #\n  # Analysis:\n  # - Total memory needed: 12 GB peak\n  # - Fewer nodes reduce operational complexity\n  # - Graviton2 provides 20% per-node savings\n  # - Better network performance per node\n  node_type = \"cache.m6g.xlarge\"\n\n  engine         = \"memcached\"\n  engine_version = \"1.6.17\"\n\n  num_cache_nodes = 4\n  az_mode        = \"cross-az\"\n\n  subnet_group_name  = var.subnet_group_name\n  security_group_ids = var.security_group_ids\n\n  maintenance_window = \"sun:05:00-sun:06:00\"\n\n  parameter_group_name = var.parameter_group_name\n\n  tags = merge(\n    var.tags,\n    {\n      \"jetscale:optimized\"      = \"true\"\n      \"jetscale:previous_nodes\" = \"6\"\n      \"jetscale:previous_type\"  = \"cache.m5.large\"\n    }\n  )\n}\n",[84,1530,1531,1536,1540,1544,1549,1554,1558,1563,1568,1573,1577,1582,1587,1592,1597,1602,1607,1611,1616,1621,1625,1630,1635,1639,1643,1647,1651,1656,1660,1664,1668,1672,1676,1680,1684,1689,1694,1698,1702],{"__ignoreMap":86},[917,1532,1533],{"class":919,"line":920},[917,1534,1535],{},"# ElastiCache Memcached Optimization\n",[917,1537,1538],{"class":919,"line":926},[917,1539,929],{},[917,1541,1542],{"class":919,"line":932},[917,1543,942],{"emptyLinePlaceholder":941},[917,1545,1546],{"class":919,"line":938},[917,1547,1548],{},"resource \"aws_elasticache_cluster\" \"session_cache\" {\n",[917,1550,1551],{"class":919,"line":945},[917,1552,1553],{},"  cluster_id = \"session-cache-memcached\"\n",[917,1555,1556],{"class":919,"line":951},[917,1557,942],{"emptyLinePlaceholder":941},[917,1559,1560],{"class":919,"line":957},[917,1561,1562],{},"  # Previous: 6x cache.m5.large ($720\u002Fmonth)\n",[917,1564,1565],{"class":919,"line":963},[917,1566,1567],{},"  # Optimized: 4x cache.m6g.xlarge ($640\u002Fmonth)\n",[917,1569,1570],{"class":919,"line":968},[917,1571,1572],{},"  # Cost Reduction: 11% ($80\u002Fmonth, $960\u002Fyear)\n",[917,1574,1575],{"class":919,"line":974},[917,1576,989],{},[917,1578,1579],{"class":919,"line":980},[917,1580,1581],{},"  # Analysis:\n",[917,1583,1584],{"class":919,"line":986},[917,1585,1586],{},"  # - Total memory needed: 12 GB peak\n",[917,1588,1589],{"class":919,"line":992},[917,1590,1591],{},"  # - Fewer nodes reduce operational complexity\n",[917,1593,1594],{"class":919,"line":998},[917,1595,1596],{},"  # - Graviton2 provides 20% per-node savings\n",[917,1598,1599],{"class":919,"line":1004},[917,1600,1601],{},"  # - Better network performance per node\n",[917,1603,1604],{"class":919,"line":1010},[917,1605,1606],{},"  node_type = \"cache.m6g.xlarge\"\n",[917,1608,1609],{"class":919,"line":1016},[917,1610,942],{"emptyLinePlaceholder":941},[917,1612,1613],{"class":919,"line":1022},[917,1614,1615],{},"  engine         = \"memcached\"\n",[917,1617,1618],{"class":919,"line":1028},[917,1619,1620],{},"  engine_version = \"1.6.17\"\n",[917,1622,1623],{"class":919,"line":1034},[917,1624,942],{"emptyLinePlaceholder":941},[917,1626,1627],{"class":919,"line":1040},[917,1628,1629],{},"  num_cache_nodes = 4\n",[917,1631,1632],{"class":919,"line":1045},[917,1633,1634],{},"  az_mode        = \"cross-az\"\n",[917,1636,1637],{"class":919,"line":1051},[917,1638,942],{"emptyLinePlaceholder":941},[917,1640,1641],{"class":919,"line":1057},[917,1642,1100],{},[917,1644,1645],{"class":919,"line":1062},[917,1646,1106],{},[917,1648,1649],{"class":919,"line":1068},[917,1650,942],{"emptyLinePlaceholder":941},[917,1652,1653],{"class":919,"line":1074},[917,1654,1655],{},"  maintenance_window = \"sun:05:00-sun:06:00\"\n",[917,1657,1658],{"class":919,"line":1080},[917,1659,942],{"emptyLinePlaceholder":941},[917,1661,1662],{"class":919,"line":1086},[917,1663,1152],{},[917,1665,1666],{"class":919,"line":1091},[917,1667,942],{"emptyLinePlaceholder":941},[917,1669,1670],{"class":919,"line":1097},[917,1671,1239],{},[917,1673,1674],{"class":919,"line":1103},[917,1675,1245],{},[917,1677,1678],{"class":919,"line":1109},[917,1679,1251],{},[917,1681,1682],{"class":919,"line":1114},[917,1683,1257],{},[917,1685,1686],{"class":919,"line":1120},[917,1687,1688],{},"      \"jetscale:previous_nodes\" = \"6\"\n",[917,1690,1691],{"class":919,"line":1126},[917,1692,1693],{},"      \"jetscale:previous_type\"  = \"cache.m5.large\"\n",[917,1695,1696],{"class":919,"line":1132},[917,1697,1275],{},[917,1699,1700],{"class":919,"line":1138},[917,1701,1281],{},[917,1703,1704],{"class":919,"line":1143},[917,1705,1287],{},[14,1707,1709],{"id":1708},"best-practices","Best Practices",[55,1711,1713],{"id":1712},"monitoring-after-changes","Monitoring After Changes",[10,1715,1716],{},"After applying Jetscale recommendations:",[1718,1719,1720,1743,1766],"ol",{},[25,1721,1722,1725,1726],{},[28,1723,1724],{},"First 24 Hours",": Monitor key metrics closely",[22,1727,1728,1731,1734,1737,1740],{},[25,1729,1730],{},"Memory utilization and eviction rate",[25,1732,1733],{},"CPU utilization (especially EngineCPU for Redis)",[25,1735,1736],{},"Cache hit rate (should remain stable)",[25,1738,1739],{},"SwapUsage (should be zero)",[25,1741,1742],{},"Connection count and latency",[25,1744,1745,1748,1749],{},[28,1746,1747],{},"Week 1",": Validate performance",[22,1750,1751,1754,1757,1760,1763],{},[25,1752,1753],{},"Application response times",[25,1755,1756],{},"Cache miss rate (should not increase)",[25,1758,1759],{},"No evictions under normal load",[25,1761,1762],{},"Network throughput within limits",[25,1764,1765],{},"Replication lag (Redis replicas)",[25,1767,1768,1771,1772],{},[28,1769,1770],{},"Week 2-4",": Confirm cost savings",[22,1773,1774,1777,1780],{},[25,1775,1776],{},"Verify AWS billing reflects expected savings",[25,1778,1779],{},"No unexpected data transfer charges",[25,1781,1782],{},"Check Reserved node recommendations",[55,1784,1786],{"id":1785},"testing-strategy","Testing Strategy",[10,1788,1789],{},[28,1790,1791],{},"Pre-Production Testing:",[1718,1793,1794,1797,1800,1803,1806],{},[25,1795,1796],{},"Apply changes to dev\u002Fstaging environment first",[25,1798,1799],{},"Run load tests simulating peak traffic",[25,1801,1802],{},"Monitor for 48-72 hours under realistic load",[25,1804,1805],{},"Validate cache performance metrics",[25,1807,1808],{},"Test failover scenarios (Redis Multi-AZ)",[10,1810,1811],{},[28,1812,1813],{},"Production Rollout:",[1718,1815,1816,1819,1822,1825,1828],{},[25,1817,1818],{},"Schedule changes during maintenance windows",[25,1820,1821],{},"Use blue\u002Fgreen deployments for zero-downtime (create new cluster, switch traffic)",[25,1823,1824],{},"Have rollback plan ready",[25,1826,1827],{},"Monitor actively during and after change",[25,1829,1830],{},"Keep old cluster running for 24 hours before terminating",[55,1832,1834],{"id":1833},"reserved-nodes-cost-optimization","Reserved Nodes & Cost Optimization",[10,1836,1837],{},[28,1838,1839],{},"When to Purchase Reserved Nodes:",[22,1841,1842,1845,1848],{},[25,1843,1844],{},"Stable, long-running caches (>1 year expected lifetime)",[25,1846,1847],{},"After right-sizing (don't reserve oversized nodes)",[25,1849,1850],{},"When commitment savings > opportunity cost",[10,1852,1853],{},[28,1854,1855],{},"Jetscale Recommendations:",[22,1857,1858,1861,1864,1867,1870],{},[25,1859,1860],{},"We analyze reserved node utilization and suggest optimal purchases",[25,1862,1863],{},"Consider 1-year over 3-year for flexibility",[25,1865,1866],{},"No Upfront option provides monthly savings with zero upfront cost",[25,1868,1869],{},"Partial Upfront offers slightly better savings",[25,1871,1872],{},"All Upfront offers maximum savings (55% for 3-year Redis)",[10,1874,1875],{},[28,1876,1877],{},"Reserved Node Savings:",[22,1879,1880,1883,1886,1889],{},[25,1881,1882],{},"1-Year No Upfront: ~30% savings",[25,1884,1885],{},"1-Year All Upfront: ~35% savings",[25,1887,1888],{},"3-Year No Upfront: ~50% savings",[25,1890,1891],{},"3-Year All Upfront: ~55% savings",[14,1893,1895],{"id":1894},"common-optimization-patterns","Common Optimization Patterns",[55,1897,1899],{"id":1898},"pattern-1-over-provisioned-redis-cluster","Pattern 1: Over-Provisioned Redis Cluster",[10,1901,1902],{},[28,1903,1904],{},"Symptoms:",[22,1906,1907,1910,1913,1916],{},[25,1908,1909],{},"Memory utilization \u003C 50% consistently",[25,1911,1912],{},"CPU utilization \u003C 30%",[25,1914,1915],{},"No evictions",[25,1917,1918],{},"Cache hit rate >95%",[10,1920,1921],{},[28,1922,1923],{},"Jetscale Recommendation:",[22,1925,1926,1929,1932],{},[25,1927,1928],{},"Downsize node type by 1-2 sizes",[25,1930,1931],{},"Typical savings: 50-66%",[25,1933,1934],{},"Risk: Low (maintain 20%+ headroom)",[55,1936,1938],{"id":1937},"pattern-2-missed-graviton-opportunities","Pattern 2: Missed Graviton Opportunities",[10,1940,1941],{},[28,1942,1904],{},[22,1944,1945,1948,1951],{},[25,1946,1947],{},"Using Intel-based instances (r5, m5, r6i)",[25,1949,1950],{},"Redis 5.0.6+ or Memcached 1.5.16+",[25,1952,1953],{},"No ARM-specific dependencies",[10,1955,1956],{},[28,1957,1923],{},[22,1959,1960,1963,1966,1969],{},[25,1961,1962],{},"Migrate to Graviton instances (r5 → r6g, m5 → m6g, or latest r7g\u002Fm7g)",[25,1964,1965],{},"Typical savings: 20-40% with same or better performance",[25,1967,1968],{},"Requirements: Verify engine version compatibility",[25,1970,1971],{},"Best for: All modern Redis and Memcached deployments",[55,1973,1975],{"id":1974},"pattern-3-non-production-multi-az","Pattern 3: Non-Production Multi-AZ",[10,1977,1978],{},[28,1979,1904],{},[22,1981,1982,1985,1988],{},[25,1983,1984],{},"Dev\u002Fstaging\u002Ftest caches with Multi-AZ enabled",[25,1986,1987],{},"High availability not required for non-production",[25,1989,1990],{},"Acceptable downtime tolerance",[10,1992,1993],{},[28,1994,1923],{},[22,1996,1997,2000,2003,2006],{},[25,1998,1999],{},"Disable Multi-AZ and automatic failover",[25,2001,2002],{},"Typical savings: 50% on node costs",[25,2004,2005],{},"Trade-off: Manual recovery vs. automatic failover",[25,2007,2008],{},"Best for: Development, staging, testing environments",[55,2010,2012],{"id":2011},"pattern-4-legacy-engine-versions","Pattern 4: Legacy Engine Versions",[10,2014,2015],{},[28,2016,1904],{},[22,2018,2019,2022,2025],{},[25,2020,2021],{},"Running Redis 5.x or older",[25,2023,2024],{},"Running Memcached 1.5.x or older",[25,2026,2027],{},"Missing performance improvements and features",[10,2029,2030],{},[28,2031,1923],{},[22,2033,2034,2037,2040,2043],{},[25,2035,2036],{},"Upgrade to latest engine version (Redis 7.x, Memcached 1.6.x)",[25,2038,2039],{},"Typical savings: 5-10% memory efficiency improvement",[25,2041,2042],{},"Additional benefits: Security patches, new features, better performance",[25,2044,2045],{},"Risk: Low to Medium (test for breaking changes)",[55,2047,2049],{"id":2048},"pattern-5-high-eviction-rate","Pattern 5: High Eviction Rate",[10,2051,2052],{},[28,2053,1904],{},[22,2055,2056,2059,2062,2065],{},[25,2057,2058],{},"Evictions > 0 consistently",[25,2060,2061],{},"Memory utilization at 100%",[25,2063,2064],{},"Cache hit rate declining",[25,2066,2067],{},"SwapUsage > 0 (critical indicator)",[10,2069,2070],{},[28,2071,1923],{},[22,2073,2074,2077,2080,2083],{},[25,2075,2076],{},"Upsize to larger node type (more memory)",[25,2078,2079],{},"Alternative: Add more nodes (Memcached) or shards (Redis Cluster Mode)",[25,2081,2082],{},"Typical cost increase: 50-100% BUT necessary for performance",[25,2084,2085],{},"Risk: High if not addressed (cache thrashing, poor performance)",[10,2087,2088,2090],{},[28,2089,139],{}," This is a case where Jetscale recommends spending MORE to improve performance and prevent cache failures.",[14,2092,2094],{"id":2093},"troubleshooting","Troubleshooting",[55,2096,2098],{"id":2097},"recommendation-concerns","Recommendation Concerns",[10,2100,2101],{},[28,2102,2103],{},"Q: Will downsizing impact cache hit rates?",[10,2105,2106],{},"A: Jetscale maintains 20%+ headroom above peak memory usage. We analyze:",[22,2108,2109,2112,2115,2118],{},[25,2110,2111],{},"99th percentile memory utilization over 14 days",[25,2113,2114],{},"Eviction patterns",[25,2116,2117],{},"Cache hit\u002Fmiss ratios",[25,2119,2120],{},"SwapUsage (critical indicator of memory pressure)",[10,2122,2123],{},"Recommendations only proceed if:",[22,2125,2126,2129,2132],{},[25,2127,2128],{},"No evictions detected in baseline period",[25,2130,2131],{},"SwapUsage is zero",[25,2133,2134],{},"Performance risk is Low or Very Low",[10,2136,2137],{},[28,2138,2139],{},"Q: What about sudden traffic spikes?",[10,2141,2142],{},"A: Our analysis includes:",[22,2144,2145,2148,2151,2154],{},[25,2146,2147],{},"P99 (99th percentile) metrics, not just averages",[25,2149,2150],{},"20% buffer above peak for unexpected spikes",[25,2152,2153],{},"Historical spike patterns",[25,2155,2156],{},"Headroom for growth",[10,2158,2159],{},[28,2160,2161],{},"Q: How do I test Graviton migration?",[10,2163,2164],{},"A: Recommended approach:",[1718,2166,2167,2170,2173,2176,2179],{},[25,2168,2169],{},"Create new Graviton-based cluster in staging",[25,2171,2172],{},"Configure application to use both clusters (A\u002FB test)",[25,2174,2175],{},"Compare performance metrics for 48-72 hours",[25,2177,2178],{},"Full cutover to Graviton cluster once validated",[25,2180,2181],{},"Apply to production after staging success",[55,2183,2185],{"id":2184},"performance-issues-after-optimization","Performance Issues After Optimization",[10,2187,2188],{},[28,2189,2190],{},"Symptom: Increased cache miss rate",[10,2192,2193],{},"Possible causes:",[22,2195,2196,2199,2202],{},[25,2197,2198],{},"Insufficient memory (too aggressive downsizing)",[25,2200,2201],{},"Evictions occurring",[25,2203,2204],{},"Key distribution issues (Redis Cluster Mode)",[10,2206,2207],{},[28,2208,2209],{},"Resolution:",[1718,2211,2212,2218,2223,2226],{},[25,2213,2214,2215,2217],{},"Check ",[84,2216,582],{}," metric (should be zero)",[25,2219,2214,2220,2222],{},[84,2221,527],{}," (should be \u003C80%)",[25,2224,2225],{},"Increase node size if memory pressure detected",[25,2227,2228],{},"Review key expiration policies",[10,2230,2231],{},[28,2232,2233],{},"Symptom: High CPU utilization",[10,2235,2193],{},[22,2237,2238,2241,2244],{},[25,2239,2240],{},"Insufficient CPU for command processing",[25,2242,2243],{},"Inefficient cache access patterns",[25,2245,2246],{},"Large key operations",[10,2248,2249],{},[28,2250,2209],{},[1718,2252,2253,2261,2264,2267],{},[25,2254,2214,2255,2257,2258,2260],{},[84,2256,576],{}," (Redis) or ",[84,2259,521],{}," (Memcached)",[25,2262,2263],{},"Review slow log for expensive operations",[25,2265,2266],{},"Increase node size if CPU consistently >70%",[25,2268,2269],{},"Optimize application cache access patterns",[10,2271,2272],{},[28,2273,2274],{},"Symptom: SwapUsage > 0",[10,2276,2277,2280],{},[28,2278,2279],{},"CRITICAL ISSUE"," - Memory pressure detected",[10,2282,2193],{},[22,2284,2285,2288,2291],{},[25,2286,2287],{},"Node type has insufficient memory",[25,2289,2290],{},"Memory leak in application",[25,2292,2293],{},"Key sizes larger than expected",[10,2295,2296],{},[28,2297,2209],{},[1718,2299,2300,2303,2309,2312],{},[25,2301,2302],{},"Immediately increase node size (memory pressure causes severe performance degradation)",[25,2304,2305,2306,2308],{},"Review ",[84,2307,533],{}," growth trends",[25,2310,2311],{},"Check for memory leaks",[25,2313,2314],{},"Implement key eviction policies if appropriate",[10,2316,2317],{},[28,2318,2319],{},"Symptom: Replication lag increasing (Redis)",[10,2321,2193],{},[22,2323,2324,2327,2330],{},[25,2325,2326],{},"High write volume",[25,2328,2329],{},"Network saturation",[25,2331,2332],{},"Undersized replicas",[10,2334,2335],{},[28,2336,2209],{},[1718,2338,2339,2344,2350,2353],{},[25,2340,2214,2341,2343],{},[84,2342,588],{}," metric",[25,2345,2346,2347,2349],{},"Verify network throughput (",[84,2348,549],{}," from primary)",[25,2351,2352],{},"Increase node size if replicas can't keep up",[25,2354,2355],{},"Consider Redis Cluster Mode for write distribution",[14,2357,2359],{"id":2358},"security-considerations","Security Considerations",[55,2361,2363],{"id":2362},"encryption","Encryption",[10,2365,2366],{},"Jetscale recommendations preserve existing encryption settings:",[22,2368,2369,2372,2375,2378],{},[25,2370,2371],{},"At-rest encryption state maintained",[25,2373,2374],{},"Transit encryption (TLS) state maintained",[25,2376,2377],{},"Auth tokens preserved (Redis)",[25,2379,2380],{},"No changes to KMS keys",[55,2382,2384],{"id":2383},"network-security","Network Security",[10,2386,2387],{},"Configuration preserved:",[22,2389,2390,2393,2396,2399],{},[25,2391,2392],{},"VPC and subnet group associations",[25,2394,2395],{},"Security group rules unchanged",[25,2397,2398],{},"Private subnet isolation maintained",[25,2400,2401],{},"No public endpoint changes",[55,2403,2405],{"id":2404},"access-control","Access Control",[22,2407,2408,2411,2414,2417],{},[25,2409,2410],{},"Redis AUTH preserved",[25,2412,2413],{},"Parameter group associations maintained",[25,2415,2416],{},"IAM authentication settings unchanged",[25,2418,2419],{},"Compliance requirements respected",[14,2421,2423],{"id":2422},"engine-compatibility","Engine Compatibility",[55,2425,2427],{"id":2426},"redis-graviton-support","Redis Graviton Support",[10,2429,2430],{},[28,2431,2432],{},"Minimum versions for Graviton:",[22,2434,2435,2438,2441],{},[25,2436,2437],{},"Redis 5.0.6+: Supports r6g, m6g (Graviton2)",[25,2439,2440],{},"Redis 6.2+: Recommended for Graviton2",[25,2442,2443],{},"Redis 7.0+: Full Graviton3 support (r7g, m7g)",[10,2445,2446],{},[28,2447,2448],{},"Feature compatibility:",[22,2450,2451,2454,2457,2460],{},[25,2452,2453],{},"All Redis features supported on Graviton",[25,2455,2456],{},"Same clustering capabilities",[25,2458,2459],{},"Same replication and persistence",[25,2461,2462],{},"No application code changes required",[55,2464,2466],{"id":2465},"memcached-graviton-support","Memcached Graviton Support",[10,2468,2469],{},[28,2470,2471],{},"Minimum versions:",[22,2473,2474,2477],{},[25,2475,2476],{},"Memcached 1.5.16+: Supports m6g (Graviton2)",[25,2478,2479],{},"Memcached 1.6.6+: Recommended for Graviton2",[10,2481,2482],{},[28,2483,2448],{},[22,2485,2486,2489,2492],{},[25,2487,2488],{},"All Memcached features supported",[25,2490,2491],{},"Same protocol and commands",[25,2493,2494],{},"No application changes required",[14,2496,2498],{"id":2497},"limitations","Limitations",[10,2500,2501],{},[28,2502,2503],{},"Not Currently Supported:",[22,2505,2506,2509,2512,2515],{},[25,2507,2508],{},"Global Datastore optimization (Redis)",[25,2510,2511],{},"Backup and restore cost optimization",[25,2513,2514],{},"Data tiering recommendations (Redis)",[25,2516,2517],{},"Outpost deployments",[10,2519,2520],{},[28,2521,2522],{},"Cluster Mode Enabled Limitations:",[22,2524,2525,2528,2531],{},[25,2526,2527],{},"Cannot change number of shards without data migration",[25,2529,2530],{},"Resharding is complex and must be planned separately",[25,2532,2533],{},"Jetscale optimizes node types but not shard topology",[14,2535,2537],{"id":2536},"api-integration","API Integration",[10,2539,2540],{},"Jetscale provides API access for programmatic optimization:",[77,2542,2546],{"className":2543,"code":2544,"language":2545,"meta":86,"style":86},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# List ElastiCache recommendations\nGET \u002Fapi\u002Fv1\u002Frecommendations?resource_type=elasticache\n\n# Get specific recommendation details\nGET \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\n\n# Approve recommendation (generates Terraform)\nPOST \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\u002Fapprove\n\n# Retrieve generated Terraform\nGET \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\u002Fterraform\n","bash",[84,2547,2548,2554,2564,2568,2573,2580,2584,2589,2597,2601,2606],{"__ignoreMap":86},[917,2549,2550],{"class":919,"line":920},[917,2551,2553],{"class":2552},"sHwdD","# List ElastiCache recommendations\n",[917,2555,2556,2560],{"class":919,"line":926},[917,2557,2559],{"class":2558},"sBMFI","GET",[917,2561,2563],{"class":2562},"sfazB"," \u002Fapi\u002Fv1\u002Frecommendations?resource_type=elasticache\n",[917,2565,2566],{"class":919,"line":932},[917,2567,942],{"emptyLinePlaceholder":941},[917,2569,2570],{"class":919,"line":938},[917,2571,2572],{"class":2552},"# Get specific recommendation details\n",[917,2574,2575,2577],{"class":919,"line":945},[917,2576,2559],{"class":2558},[917,2578,2579],{"class":2562}," \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\n",[917,2581,2582],{"class":919,"line":951},[917,2583,942],{"emptyLinePlaceholder":941},[917,2585,2586],{"class":919,"line":957},[917,2587,2588],{"class":2552},"# Approve recommendation (generates Terraform)\n",[917,2590,2591,2594],{"class":919,"line":963},[917,2592,2593],{"class":2558},"POST",[917,2595,2596],{"class":2562}," \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\u002Fapprove\n",[917,2598,2599],{"class":919,"line":968},[917,2600,942],{"emptyLinePlaceholder":941},[917,2602,2603],{"class":919,"line":974},[917,2604,2605],{"class":2552},"# Retrieve generated Terraform\n",[917,2607,2608,2610],{"class":919,"line":980},[917,2609,2559],{"class":2558},[917,2611,2612],{"class":2562}," \u002Fapi\u002Fv1\u002Frecommendations\u002F{recommendation_id}\u002Fterraform\n",[10,2614,2615,2616,2621],{},"See our ",[2617,2618,2620],"a",{"href":2619},"\u002Fdocs\u002Fapi-reference","API Documentation"," for complete reference.",[14,2623,2625],{"id":2624},"iam-permissions-required","IAM Permissions Required",[10,2627,2628],{},"Jetscale requires the following IAM permissions for ElastiCache optimization:",[10,2630,2631],{},[28,2632,2633],{},"Read permissions (for analysis):",[77,2635,2639],{"className":2636,"code":2637,"language":2638,"meta":86,"style":86},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"Version\": \"2012-10-17\",\n  \"Statement\": [\n    {\n      \"Effect\": \"Allow\",\n      \"Action\": [\n        \"elasticache:DescribeCacheClusters\",\n        \"elasticache:DescribeReplicationGroups\",\n        \"elasticache:DescribeCacheParameters\",\n        \"elasticache:DescribeCacheEngineVersions\",\n        \"elasticache:ListTagsForResource\",\n        \"cloudwatch:GetMetricStatistics\",\n        \"cloudwatch:GetMetricData\",\n        \"ce:GetCostAndUsage\"\n      ],\n      \"Resource\": \"*\"\n    }\n  ]\n}\n","json",[84,2640,2641,2647,2673,2687,2691,2712,2725,2737,2748,2759,2770,2781,2792,2803,2813,2818,2836,2840,2845],{"__ignoreMap":86},[917,2642,2643],{"class":919,"line":920},[917,2644,2646],{"class":2645},"sMK4o","{\n",[917,2648,2649,2652,2656,2659,2662,2665,2668,2670],{"class":919,"line":926},[917,2650,2651],{"class":2645},"  \"",[917,2653,2655],{"class":2654},"spNyl","Version",[917,2657,2658],{"class":2645},"\"",[917,2660,2661],{"class":2645},":",[917,2663,2664],{"class":2645}," \"",[917,2666,2667],{"class":2562},"2012-10-17",[917,2669,2658],{"class":2645},[917,2671,2672],{"class":2645},",\n",[917,2674,2675,2677,2680,2682,2684],{"class":919,"line":932},[917,2676,2651],{"class":2645},[917,2678,2679],{"class":2654},"Statement",[917,2681,2658],{"class":2645},[917,2683,2661],{"class":2645},[917,2685,2686],{"class":2645}," [\n",[917,2688,2689],{"class":919,"line":938},[917,2690,1251],{"class":2645},[917,2692,2693,2696,2699,2701,2703,2705,2708,2710],{"class":919,"line":945},[917,2694,2695],{"class":2645},"      \"",[917,2697,2698],{"class":2558},"Effect",[917,2700,2658],{"class":2645},[917,2702,2661],{"class":2645},[917,2704,2664],{"class":2645},[917,2706,2707],{"class":2562},"Allow",[917,2709,2658],{"class":2645},[917,2711,2672],{"class":2645},[917,2713,2714,2716,2719,2721,2723],{"class":919,"line":951},[917,2715,2695],{"class":2645},[917,2717,2718],{"class":2558},"Action",[917,2720,2658],{"class":2645},[917,2722,2661],{"class":2645},[917,2724,2686],{"class":2645},[917,2726,2727,2730,2733,2735],{"class":919,"line":957},[917,2728,2729],{"class":2645},"        \"",[917,2731,2732],{"class":2562},"elasticache:DescribeCacheClusters",[917,2734,2658],{"class":2645},[917,2736,2672],{"class":2645},[917,2738,2739,2741,2744,2746],{"class":919,"line":963},[917,2740,2729],{"class":2645},[917,2742,2743],{"class":2562},"elasticache:DescribeReplicationGroups",[917,2745,2658],{"class":2645},[917,2747,2672],{"class":2645},[917,2749,2750,2752,2755,2757],{"class":919,"line":968},[917,2751,2729],{"class":2645},[917,2753,2754],{"class":2562},"elasticache:DescribeCacheParameters",[917,2756,2658],{"class":2645},[917,2758,2672],{"class":2645},[917,2760,2761,2763,2766,2768],{"class":919,"line":974},[917,2762,2729],{"class":2645},[917,2764,2765],{"class":2562},"elasticache:DescribeCacheEngineVersions",[917,2767,2658],{"class":2645},[917,2769,2672],{"class":2645},[917,2771,2772,2774,2777,2779],{"class":919,"line":980},[917,2773,2729],{"class":2645},[917,2775,2776],{"class":2562},"elasticache:ListTagsForResource",[917,2778,2658],{"class":2645},[917,2780,2672],{"class":2645},[917,2782,2783,2785,2788,2790],{"class":919,"line":986},[917,2784,2729],{"class":2645},[917,2786,2787],{"class":2562},"cloudwatch:GetMetricStatistics",[917,2789,2658],{"class":2645},[917,2791,2672],{"class":2645},[917,2793,2794,2796,2799,2801],{"class":919,"line":992},[917,2795,2729],{"class":2645},[917,2797,2798],{"class":2562},"cloudwatch:GetMetricData",[917,2800,2658],{"class":2645},[917,2802,2672],{"class":2645},[917,2804,2805,2807,2810],{"class":919,"line":998},[917,2806,2729],{"class":2645},[917,2808,2809],{"class":2562},"ce:GetCostAndUsage",[917,2811,2812],{"class":2645},"\"\n",[917,2814,2815],{"class":919,"line":1004},[917,2816,2817],{"class":2645},"      ],\n",[917,2819,2820,2822,2825,2827,2829,2831,2834],{"class":919,"line":1010},[917,2821,2695],{"class":2645},[917,2823,2824],{"class":2558},"Resource",[917,2826,2658],{"class":2645},[917,2828,2661],{"class":2645},[917,2830,2664],{"class":2645},[917,2832,2833],{"class":2562},"*",[917,2835,2812],{"class":2645},[917,2837,2838],{"class":919,"line":1016},[917,2839,1275],{"class":2645},[917,2841,2842],{"class":919,"line":1022},[917,2843,2844],{"class":2645},"  ]\n",[917,2846,2847],{"class":919,"line":1028},[917,2848,1287],{"class":2645},[10,2850,2851,2854],{},[28,2852,2853],{},"Note:"," Jetscale does not require write permissions. All changes are implemented via generated Terraform code that you review and apply through your existing deployment processes.",[14,2856,2858],{"id":2857},"support","Support",[10,2860,2861],{},"Need help with ElastiCache optimization?",[22,2863,2864,2874,2883],{},[25,2865,2866,2869,2870],{},[28,2867,2868],{},"Email",": ",[2617,2871,2873],{"href":2872},"mailto:support@jetscale.ai","support@jetscale.ai",[25,2875,2876,2869,2879],{},[28,2877,2878],{},"Documentation",[2617,2880,2882],{"href":2881},"\u002Fdocs\u002Ffaq","FAQ",[25,2884,2885,2869,2888],{},[28,2886,2887],{},"GitHub Issues",[2617,2889,2893],{"href":2890,"rel":2891},"https:\u002F\u002Fgithub.com\u002FJetscale-ai\u002Fjetscale-docs\u002Fissues",[2892],"nofollow","Report a problem",[2895,2896],"hr",{},[10,2898,2899],{},[28,2900,2901],{},"Related Documentation:",[22,2903,2904,2910,2916],{},[25,2905,2906],{},[2617,2907,2909],{"href":2908},"\u002Fdocs\u002Fservices\u002Frds","RDS Optimization",[25,2911,2912],{},[2617,2913,2915],{"href":2914},"\u002Fdocs\u002Fservices\u002Fec2","EC2 Optimization",[25,2917,2918],{},[2617,2919,2921],{"href":2920},"\u002Fdocs\u002Fservices\u002Febs","EBS Optimization",[2923,2924,2925],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":86,"searchDepth":926,"depth":926,"links":2927},[2928,2929,2933,2939,2945,2950,2957,2961,2966,2970,2971,2972,2973],{"id":16,"depth":926,"text":17},{"id":52,"depth":926,"text":53,"children":2930},[2931,2932],{"id":57,"depth":932,"text":58},{"id":143,"depth":932,"text":144},{"id":202,"depth":926,"text":203,"children":2934},[2935,2936,2937,2938],{"id":209,"depth":932,"text":210},{"id":261,"depth":932,"text":262},{"id":303,"depth":932,"text":304},{"id":338,"depth":932,"text":339},{"id":495,"depth":926,"text":496,"children":2940},[2941,2942,2943,2944],{"id":499,"depth":932,"text":500},{"id":698,"depth":932,"text":699},{"id":806,"depth":932,"text":807},{"id":899,"depth":932,"text":900},{"id":1708,"depth":926,"text":1709,"children":2946},[2947,2948,2949],{"id":1712,"depth":932,"text":1713},{"id":1785,"depth":932,"text":1786},{"id":1833,"depth":932,"text":1834},{"id":1894,"depth":926,"text":1895,"children":2951},[2952,2953,2954,2955,2956],{"id":1898,"depth":932,"text":1899},{"id":1937,"depth":932,"text":1938},{"id":1974,"depth":932,"text":1975},{"id":2011,"depth":932,"text":2012},{"id":2048,"depth":932,"text":2049},{"id":2093,"depth":926,"text":2094,"children":2958},[2959,2960],{"id":2097,"depth":932,"text":2098},{"id":2184,"depth":932,"text":2185},{"id":2358,"depth":926,"text":2359,"children":2962},[2963,2964,2965],{"id":2362,"depth":932,"text":2363},{"id":2383,"depth":932,"text":2384},{"id":2404,"depth":932,"text":2405},{"id":2422,"depth":926,"text":2423,"children":2967},[2968,2969],{"id":2426,"depth":932,"text":2427},{"id":2465,"depth":932,"text":2466},{"id":2497,"depth":926,"text":2498},{"id":2536,"depth":926,"text":2537},{"id":2624,"depth":926,"text":2625},{"id":2857,"depth":926,"text":2858},[2975,2976,2977],"optimization-methodology","provider-service-support","savings-methodology","Jetscale provides AI-powered cost optimization for Amazon ElastiCache including both Redis and Memcached clusters. Our specialized agents analyze your caching workloads to...","md","en",{},[],"Cloud Optimization","\u002Fdocs\u002Fservices\u002Felasticache","legacy-import",{"title":5,"description":2978},[],"docs\u002F5.services\u002F4.elasticache","high","services\u002Felasticache","EegC3hPrRJzY2N80Df0W2GIoJrAASdgqEjrAGYzZmGU",[2993],{"title":2994,"path":2995,"stem":2996,"children":2997},"Docs","\u002Fdocs","docs",[2998,3001,3005,3009,3013,3017,3039,3043,3072,3076,3079],{"title":2999,"path":2995,"stem":3000},"Jetscale Documentation","docs\u002Findex",{"title":3002,"path":3003,"stem":3004},"Getting Started with Jetscale","\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",{"title":3006,"path":3007,"stem":3008},"AWS Setup Guide","\u002Fdocs\u002Faws-setup","docs\u002F2.aws-setup",{"title":3010,"path":3011,"stem":3012},"Azure Setup Guide","\u002Fdocs\u002Fazure-setup","docs\u002F3.azure-setup",{"title":3014,"path":3015,"stem":3016},"How Jetscale Works","\u002Fdocs\u002Fhow-it-works","docs\u002F4.how-it-works",{"title":3018,"path":3019,"stem":3020,"children":3021},"Integrations","\u002Fdocs\u002Fintegrations","docs\u002F4.integrations\u002Findex",[3022,3023,3027,3031,3035],{"title":3018,"path":3019,"stem":3020},{"title":3024,"path":3025,"stem":3026},"GitHub Integration","\u002Fdocs\u002Fintegrations\u002Fgithub","docs\u002F4.integrations\u002F1.github",{"title":3028,"path":3029,"stem":3030},"Jira Integration","\u002Fdocs\u002Fintegrations\u002Fjira","docs\u002F4.integrations\u002F2.jira",{"title":3032,"path":3033,"stem":3034},"Slack Integration","\u002Fdocs\u002Fintegrations\u002Fslack","docs\u002F4.integrations\u002F3.slack",{"title":3036,"path":3037,"stem":3038},"Bitbucket Integration","\u002Fdocs\u002Fintegrations\u002Fbitbucket","docs\u002F4.integrations\u002F4.bitbucket",{"title":3040,"path":3041,"stem":3042},"AI-Powered Analysis","\u002Fdocs\u002Fai-analysis","docs\u002F5.ai-analysis",{"title":3044,"path":3045,"stem":3046,"children":3047},"Supported Services","\u002Fdocs\u002Fservices","docs\u002F5.services\u002Findex",[3048,3049,3051,3053,3057,3058,3060,3064,3068],{"title":3044,"path":3045,"stem":3046},{"title":2921,"path":2920,"stem":3050},"docs\u002F5.services\u002F1.ebs",{"title":2915,"path":2914,"stem":3052},"docs\u002F5.services\u002F2.ec2",{"title":3054,"path":3055,"stem":3056},"EKS Optimization","\u002Fdocs\u002Fservices\u002Feks","docs\u002F5.services\u002F3.eks",{"title":5,"path":2984,"stem":2988},{"title":2909,"path":2908,"stem":3059},"docs\u002F5.services\u002F5.rds",{"title":3061,"path":3062,"stem":3063},"S3 Optimization","\u002Fdocs\u002Fservices\u002Fs3","docs\u002F5.services\u002F6.s3",{"title":3065,"path":3066,"stem":3067},"Azure SQL Optimization","\u002Fdocs\u002Fservices\u002Fazure-sql","docs\u002F5.services\u002F7.azure-sql",{"title":3069,"path":3070,"stem":3071},"Azure VM Optimization","\u002Fdocs\u002Fservices\u002Fazure-vm","docs\u002F5.services\u002F8.azure-vm",{"title":3073,"path":3074,"stem":3075},"Recommendation Workflow","\u002Fdocs\u002Frecommendation-workflow","docs\u002F6.recommendation-workflow",{"title":3077,"path":2619,"stem":3078},"API Reference","docs\u002F7.api-reference",{"title":2882,"path":2881,"stem":3080},"docs\u002F8.faq",[3082,3084],{"title":3054,"path":3055,"stem":3056,"description":3083,"children":-1},"Jetscale provides AI-powered cost optimization for Amazon EKS clusters. Our specialized agents analyze node group utilization, instance types, capacity configurations, and...",{"title":2909,"path":2908,"stem":3059,"description":3085,"children":-1},"Jetscale provides AI-powered cost optimization for Amazon RDS including both standalone instances and Aurora clusters. Our specialized agents analyze your database workloads to...",1788204005173]