I have taken a database class this semester and we are studying about
maintaining cache consistency between the RDBMS and a cache server such
as memcached. The consistency issues arise when there are race
conditions. For example: 1. Suppose I do a get(key) from the cache and
their is a cache miss. Because I get a cache miss, I fetch the data from
the database, and then do a put(key,value) into the cache. 2. But, a
race condition might happen, where some other user might delete the data
I fetched from the database. This delete might happen before I do a put
into the cache.

Thus, ideally the put into the cache should not happen, since the data
is longer present into the database.

If the cache entry has a TTL, the entry in the cache might expire. But
still, their is a window where the data in the cache is inconsistent
with the database.


Does anyone know how to prevent race condition in that scenario?

The code that deletes the data from the database should issue a delete on the memcache data.

Sounds like maybe you are doing query based caching which is caching 101 and only holds up for a very short time or can last when you understand the caveats and are willing to live with them.

Brian.

--

--- You received this message because you are subscribed to the Google Groups "memcached" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to memcached+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to