Cache-Memcached-Turnstile
view release on metacpan or search on metacpan
1 A hot cached value expires. Between the point in time when it expired
and the time when the first user has recomputed the value and
successfully filled the cache, all users of the cache will, in a naive
cache client implementation, attempt to recalculate the value to store
in the cache. This can bring down back-end systems that are not
designed to handle the load of all front-ends that rely on the
cache[1].
2 A normal web environment has rather friendly, randomized access
patterns. But if your cache has a number of near-synchronized clients
that all attempt to access a new cache key in unison (such as when a
second or a minute roll around), then some of the mechanisms that can
help in situation 1 break down.
The Solution
A very effective approach to deal with most causes of situation 1) is
described in [2]. In a nutshell, it's a trade-off in that we accept that
for a small amount of time, we will serve data from a stale cache. This
small amount of time is the minimum of either: the time it takes for a
single process to regenerate a fresh cache value, or a configured safety
lib/Cache/Memcached/Turnstile.pm view on Meta::CPAN
expired and the time when the first user has recomputed the
value and successfully filled the cache, all users of the cache
will, in a naive cache client implementation, attempt to
recalculate the value to store in the cache. This can bring down
back-end systems that are not designed to handle the load of
all front-ends that rely on the cacheL<[1]|/"Footnotes">.
=item 2
A normal web environment has rather friendly, randomized access
patterns. But if your cache has a number of near-synchronized
clients that all attempt to access a new cache key in unison
(such as when a second or a minute roll around), then some of the
mechanisms that can help in situation 1 break down.
=back
=head2 The Solution
A very effective approach to deal with most causes of situation 1)
is described in L<[2]|/"Footnotes">. In a nutshell, it's a trade-off in that we
( run in 0.286 second using v1.01-cache-2.11-cpan-0d8aa00de5b )