All skills
aws avatar

/amazon-elasticache

@b4416dd

Activate when developers have latent caching needs: slow API responses, database read bottlenecks, DynamoDB throttling or cost, RDS/Aurora scaling pressure, Bedrock latency or cost, or adding a cache; activate when working with Redis, Valkey, Memcached, or any in-memory data store, cache-aside patterns, session stores, rate limiting, leaderboards, counters, streams, queues, pub/sub, distributed locks, feature flags, shopping carts, or other caching strategies. Activate for GenAI and ML retrieval: vector similarity search for low-latency retrieval, semantic caching, RAG, LLM response caching, embedding stores, AI agent memory, recommendation, personalization. Activate for ElastiCache lifecycle: provisioning (serverless or node-based), engine selection, CloudFormation/CDK/Terraform IaC, VPC connectivity, TLS, RBAC, IAM auth, Global Datastore, monitoring, troubleshooting, cost optimization, and migration from self-managed Redis. Do not trigger for browser caches, CDN/CloudFront, HTTP Cache-Control, CPU caches.

Use this Skill: https://skilld.dev/gh/aws/agent-toolkit-for-aws/amazon-elasticache

This session only. Nothing lands on disk.

referencesmonitoringslot-memory-imbalance-detection.md

≈1.7k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Slot Memory Imbalance Detection

When to use: Uneven memory across cluster nodes (one node near DatabaseMemoryUsagePercentage ceiling while siblings are well below), suspected hash-tag bundling, or planning resharding and want to identify which slots carry the most memory. Valkey 8.0+ cluster mode enabled only. When not needed: Cluster-wide uniform memory pressure (troubleshooting.md Memory Pressure). Per-node CPU imbalance without memory skew (hot-key-detection.md). Serverless (abstracts slot topology).

Preconditions

Deployment Applicability
Serverless Does not apply. Slot topology is abstracted.
Node-based, cluster mode disabled Does not apply (single-shard). Use big-key-hunter.md + key-space-distribution-by-prefix.md.
Node-based, cluster mode enabled Full playbook.

Engine version gate

CLUSTER SLOT-STATS with MEMORY-BYTES requires Valkey 8.0+ (this is a Valkey-only feature and is not available on any Redis OSS engine version). Verify:

valkey-cli -h <endpoint> -p 6379 --tls INFO server | grep -E 'redis_version|valkey_version'

Pre-Valkey 8.0 degraded workflow: 1) Per-shard CloudWatch triage (Tier A). 2) valkey-cli --bigkeys against the hot shard's primary. 3) CLUSTER KEYSLOT <key> per big-key candidate to find the heavy slot. 4) MEMORY USAGE <key> on top candidates for byte confirmation. Takes 15-30 minutes on a 10M-key shard vs. subsecond with SLOT-STATS.

Feature flag

cluster-slot-stats-enabled must be yes in the parameter group. This is a Valkey 8.0+ parameter; verify it is available in your cache parameter group before relying on it. Note: This parameter may not appear in ElastiCache parameter groups documentation. It may be enabled by default or not exposed as a configurable parameter. CONFIG GET is restricted on all ElastiCache caches; check via the AWS API:

aws elasticache describe-cache-parameters \
  --cache-parameter-group-name <parameter-group-name> \
  --query "Parameters[?ParameterName=='cluster-slot-stats-enabled'].ParameterValue" \
  --output text --region <region>

If missing or no, enable via parameter group modification (zero-downtime on most configs).

Command availability

Command Supported Notes
CLUSTER SLOT-STATS ORDERBY MEMORY-BYTES Valkey 8.0+ cluster mode, NB only. Requires cluster-slot-stats-enabled parameter set to yes. Availability on ElastiCache depends on engine version and parameter group support. Primary Tier B tool
CLUSTER SHARDS NB (Valkey 7.2+ / Redis OSS 7.0+), SL (virtual shard) Topology discovery
CLUSTER COUNTKEYSINSLOT <slot> NB all versions Per-slot key count
CLUSTER GETKEYSINSLOT <slot> <count> NB all versions Enumerate keys in a slot
CLUSTER KEYSLOT <key> NB all versions Hash key to slot number
MEMORY USAGE <key> NB only, blocked on SL Tier C byte confirmation

Tier A: Triage with CloudWatch

Step 1: Per-node memory utilization

aws cloudwatch get-metric-statistics \
  --namespace AWS/ElastiCache \
  --metric-name DatabaseMemoryUsagePercentage \
  --dimensions Name=CacheClusterId,Value=<node-id> Name=CacheNodeId,Value=0001 \
  --start-time <24h-ago> --end-time <now> \
  --period 300 --statistics Maximum --region <region>

Run for each primary (discover with CLUSTER SHARDS).

Stop condition: If all primaries are within 10 percentage points, memory is distributed uniformly. No slot-imbalance problem. Route to troubleshooting.md Memory Pressure if overall memory is high.

Proceed if spread is >15 percentage points (e.g., one node at 85%, another at 45%).

Step 2: Confirm persistence

Query BytesUsedForCache per node over 24h (node-based, using CacheClusterId and CacheNodeId dimensions). For serverless, use BytesUsedForCache with the ServerlessCacheName dimension. A stable gap over hours is real. A 10-minute transient is not.


Tier B: Narrow with CLUSTER SLOT-STATS

Step 1: Identify memory-heavy slots

valkey-cli -h <endpoint> -p 6379 --tls \
  CLUSTER SLOT-STATS ORDERBY MEMORY-BYTES DESC LIMIT 20

A single dominant slot (order of magnitude above peers) is a memory hotspot.

Cost and impact

Subsecond, negligible impact. Reads stats Valkey already maintains. Safe at any time on production.

Step 2: Map hot slots to shards

Use CLUSTER SHARDS output to map each hot slot to its primary. Hot slot on the already-hot node confirms the story.

Step 3: Correlate with key count

valkey-cli -h <endpoint> -p 6379 --tls CLUSTER COUNTKEYSINSLOT <hot-slot>
Pattern Cause Next step
Few keys, large memory Big-key(s) in this slot big-key-hunter.md
Many keys, large memory Hash-tag concentration Continue to Tier C

Stop condition: If top 20 slots are within 2x of each other, no single hot slot. Consider rebalancing slot assignments rather than application-level remediation.


Tier C: Verify with key-level inspection

Step 1: Sample keys from the hot slot

valkey-cli -h <endpoint> -p 6379 --tls \
  CLUSTER GETKEYSINSLOT <hot-slot> 200

Step 2: Identify hash-tag pattern

Look for common {...} hash-tag prefix in returned keys. If most keys are {tenant_42}:session:*, {tenant_42}:cache:*, tenant 42 has concentrated its keys into a single slot.

Step 3: Measure top keys

valkey-cli -h <endpoint> -p 6379 --tls MEMORY USAGE <key>

If one key dominates bytes, this is a big-key problem (route to big-key-hunter.md). If memory is evenly distributed, hash-tag concentration is the cause.


Remediation

Pick based on Tier C classification:

Cause Remediation
Hash-tag concentration (default) Redesign hash-tag: {tenant_id}:{shard_id} where shard_id is a random 4-bit prefix. Spreads keys across 16 slots while keeping intra-tenant MULTI/LUA local. Application change required.
Oversized tenant Split to dedicated cache. For tenants using >30% of cluster memory.
Big key in hot slot big-key-hunter.md remediation (decomposition, compression, move to S3).
Slot-count skew Manual slot rebalance via online resharding (modify-replication-group-shard-configuration).
Orphan keys Bulk UNLINK after confirming via key-space-distribution-by-prefix.md TTL audit.
Scale up (last resort) Larger node type. Only masks the symptom.

Cross-links

  • Hot slot also has high CPU: hot-key-detection.md Tier B (same SLOT-STATS, ORDERBY CPU-USEC axis)
  • Specific key in slot is oversized: big-key-hunter.md
  • Concentration is prefix-based, not slot-based: key-space-distribution-by-prefix.md
  • Alarm patterns for memory imbalance: alarm-packs.md

Source: SKILL.md on GitHub

No alerts2mo3 checks · Risk SAFE
  • Gen Agent Trust Hub2mo

    This skill provides a comprehensive set of tools for managing Amazon ElastiCache, including provisioning, connectivity setup, and performance monitoring. It leverages standard AWS command-line tools and verified libraries to assist with database operations and cost optimization.

  • Socket2mo

    No alerts

  • Snyk2mo

    Risk: LOW · No issues

Signed by skilld at b4416dd. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub yesterday.

Activeupdated 2 months ago
version
2

README badge

README badge for aws/agent-toolkit-for-aws/amazon-elasticache