The available memory in my Amazon ElastiCache Redis node is always less than the value listed in Amazon ElastiCache pricing. Why is this?
The ElastiCache pricing page shows the available memory in GiB for each supported node type. However, in the default parameter group, a percentage of the memory is reserved for backups and failover operations. For Redis versions before 2.8.22, it's a best practice to reserve 50% of the total memory. For Redis versions 2.8.22 and later it's a best practice to reserve 25% of the total memory. The parameter that regulates this is reserved-memory (for customers who started with ElastiCache before March 16, 2017) or reserved-memory-percent (for customers who started with ElastiCache on or after March 16, 2017).
For example, a cluster using cache.t3.micro node type that is in the default parameter group has 0.5 GiB of total memory. Due to the reserved-memory-percent parameter, 25% of this memory is reserved. Therefore, the available memory in this node is 0.375 GiB.
To see the available memory in an ElastiCache Redis node:
1. Connect to the cluster using the redis-cli tool or another tool of your choice. For information on using the redis-cli tool, see Connect to a Redis cluster or replication group (Linux).
2. Run the info memory command and check the maxmemory value. The following example output was generated using redis-cli connected to a Redis server with IP address 172.31.35.93.
172.31.35.93:6379> info memory
Note: The maxmemory value is in bytes. 402653184 bytes is equivalent to 0.375 GiB. The Redis engine uses bytes or MB to represent memory. The AWS documentation uses GiB to represent memory. Although the difference between these two units is marginal and makes almost no difference with small numbers, the difference grows exponentially based on the size of the node memory. You can use an online calculator of your choice to convert between these units.
Managing reserved memory