Question: Why is there no eviction policy in Redis and how can it be configured?
Answer
In Redis, the eviction policy refers to the method chosen to remove data when memory is full. If there's no eviction policy in place, Redis won't remove keys to free up space when the max memory limit is reached. Instead, it may return errors on commands that use more memory.
You can configure an eviction policy through the maxmemory-policy
configuration directive, which defaults to noeviction
.
Here are the different types of eviction policies available in Redis:
noeviction
: Returns an error if the memory limit has been reached when trying to insert more data.allkeys-lru
: Evicts the least recently used keys out of all keys.volatile-lru
: Evicts the least recently used keys out of all keys with an expire set.allkeys-random
: Evicts random keys out of all keys.volatile-random
: Evicts random keys out of all keys with an expire set.volatile-ttl
: Evicts keys with an expire set, sorted by shortest to longest TTL (time to live).volatile-lfu
: Evicts the least frequently used keys out of all keys with an expire set.allkeys-lfu
: Evicts the least frequently used keys out of all keys.
To set an eviction policy, you can modify your redis.conf file or use the CONFIG SET
command. Here's how you can do it using the CONFIG SET
command:
redis-cli config set maxmemory-policy allkeys-lru
This command sets the eviction policy to allkeys-lru
, meaning that Redis will evict the least recently used keys when the max memory limit is hit. Make sure to choose an eviction policy that suits your application's needs.
Was this content helpful?
Other Common Redis Questions (and Answers)
Free System Design on AWS E-Book
Download this early release of O'Reilly's latest cloud infrastructure e-book: System Design on AWS.
Switch & save up to 80%
Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement. Instantly experience up to a 25X boost in performance and 80% reduction in cost