question about the LRU

Mathieu Viel viel at benchmark.fr
Thu Jan 3 10:34:23 UTC 2008


Hi guys. I have a question about the cache structure.

I want to use memcached to store some frequently used data chuncks and 
the idea is to always have in memcached the most frequent requested 
data;  if  i insert some new data when the memory for memcached is fully 
used, i want the least requested data to be replaced.

I noticed in the FAQ that the cache structure is an LRU so i thought 
"great i'll have almost nothing to do to implement this!" but, in order 
to make sure, i ran some tests and i am dissapointed about the results.

With a 1Mb memcached, i first set an item with "1_1_1" as key and "1" as 
value; i then get the value of this item (which is working ^^) and then 
set some new randoms items i will never retrieve in order to fill the 
memory (i made sure the key value will never be "1_1_1" for these 
items); i then get the value of my "1_1_1" item to check if it's still 
there. This "simple" process is working fine but when the memory is 
filled, after some time, i can't get the value of my "1_1_1" item anymore :S

I tried to check in verbose mode (-vv) and i can't get any interesting 
information about this "issue".

I thought that since i frequently get the value of this item, it would 
not make it the LRU one so its would never be somehow erased. Am i 
wrong? I know about the different slabs sizes but since i always set the 
value to "1", i think all these items are in the same category.

Thanks for help!

--
Vivi


More information about the memcached mailing list