There are two types of data expiry within a memcached instance. The first type is applied at the point
when you storę a new keyA/alue pair into the memcached instance. If there is not enough space within
a suitable slab to storę the value, then an existing least recently used (LRU) object is removed (evicted)
from the cache to make room for the new item.
The LRU algorithm ensures that the object that is removed is one that is either no longer in active
use or that was used so long ago that its data is potentially out of datę or of little value. However, in
a system where the memory allocated to memcached is smaller than the number of regularly used
objects required in the cache, a lot of expired items could be removed from the cache even though they
are in active use. You use the statistics mechanism to get a better idea of the level of evictions (expired
objects). For morę information, see Section 15.6.4, “Getting memcached Statistics". You can change this eviction behavior by setting the -M command-line option when starting
memcached. This option forces an error to be returned when the memory has been exhausted, instead of automatically evicting older data.
The second type of expiry system is an explicit mechanism that you can set when a keyA/alue pair is
inserted into the cache, or when deleting an item from the cache. Using an expiration time can be a
useful way of ensuring that the data in the cache is up to datę and in linę with your application needs and requirements.
A typical scenario for explicitly setting the expiry time might include caching session data for a user
when accessing a Web site. memcached uses a lazy expiry mechanism where the explicit expiry time
that has been set is compared with the current time when the object is requested.
Only objects that
have notexpired are returned.
You can also set the expiry time when explicitly deleting an object from the cache. In this case, the
expiry time is really a timeout and indicates the period when any attempts to set the value for a given key are rejected.