Question: How are evictions handled in ElastiCache?


When working with Amazon ElastiCache, understanding the eviction policy is crucial for managing your cache effectively and ensuring that your application performs optimally. In the context of Amazon ElastiCache, eviction refers to the process of removing keys from your cache when it reaches its maximum capacity.

The Eviction Process

ElastiCache supports different types of eviction policies. The policy determines which keys will be removed first when the cache runs out of memory.

Here's a brief overview of some of the key eviction policies:

  • volatile-lru: The least recently used keys where an expire set are evicted first.
  • allkeys-lru: The least recently used keys are evicted first.
  • volatile-random: A randomly chosen key where an expire set is evicted first.
  • allkeys-random: A randomly chosen key is evicted first.
  • volatile-ttl: The keys with the soonest expiry timestamps are evicted first.
  • noeviction: Returns an error when the memory limit is reached and client tries to add new keys.

You can set the eviction policy through AWS Management Console, AWS CLI, or ElastiCache API.

It's important to note that when ElastiCache evicts keys based on the TTL (Time To Live), those keys may still exist in the cache until they're overwritten by new data.

Setting the Eviction Policy (Example using AWS CLI)

Here is a code example illustrating how to modify the eviction policy to allkeys-lru using the AWS CLI:

aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name my-cpg \ --parameter-name-values ParameterName='maxmemory-policy',ParameterValue='allkeys-lru'

In this command, replace my-cpg with the name of your cache parameter group. After modifying a parameter group, you must reboot the nodes for changes to take effect. You should also ensure that your application can handle any cache node reboots.

Remember to choose an eviction policy that best matches your application’s needs and patterns of access to ensure optimal performance.

Was this content helpful?

Start building today

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.