Question: How much memory RAM does Memcached use?


Memcached is a distributed in-memory caching system that stores data in the RAM of multiple servers to increase application performance by reducing the number of times information needs to be fetched from slower data storage mediums. To determine how much RAM Memcached will use, you can use the following formula:

Total memory = (data size + key size) / (1 - cache hit ratio)

In this formula:

  • data size represents the size of data you're storing in Memcached.
  • key size represents the size of keys used to access the data.
  • cache hit ratio represents the probability that a requested item will be found in the cache, expressed as a decimal fraction.

For example, let's say we want to store 1 million records, each with a size of 1KB, and our cache hit ratio is 0.8 (80%). The key size is typically small and can be ignored for the purpose of this calculation. In this scenario, the total memory required would be:

Total memory = (1,000,000 * 1KB) / (1 - 0.8) = 5,000,000 KB or 4.77 GB

This calculation assumes that all records have an equal chance of being accessed, and that there is no eviction happening on your Memcached server.

It's important to note that Memcached uses only a limited amount of memory per server. By default, it allocates 64MB of memory. However, you can change this value by setting the -m parameter during startup. For example, to allocate 512MB of memory, you can start Memcached with the following command:

memcached -m 512

If you need to configure Memcached to use more RAM than a single server can provide, you may want to consider using a technique called "sharding," which involves breaking up your data into multiple shards stored on different servers.

Was this content helpful?

White Paper

Free System Design on AWS E-Book

Download this early release of O'Reilly's latest cloud infrastructure e-book: System Design on AWS.

Free System Design on AWS E-Book
Start building today

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