views:

102

answers:

3

I'm currently storing generated HTML pages in a memcached in-memory cache. This works great, however I am wanting to increase the storage capacity of the cache beyond available memory. What I would really like is:

  1. memcached semantics (i.e. not reliable, just a cache)
  2. memcached api preferred (but not required)
  3. large in-memory first level cache (MRU)
  4. huge on-disk second level cache (main)
  5. evicted from on-disk cache at maximum storage using LRU or LFU
  6. proven implementation

In searching for a solution I've found the following solutions but they all miss my marks in some way. Does anyone know of either:

  • other options that I haven't considered
  • a way to make memcachedb do evictions

Already considered are:

memcachedb

  • best fit but doesn't do evictions: explicitly "not a cache"
  • can't see any way to do evictions (either manual or automatic)

tugela cache

  • abandoned, no support
  • don't want to recommend it to customers

nmdb

  • doesn't use memcache api
  • new and unproven
  • don't want to recommend it to customers
A: 

Tokyo Cabinet/Tokyo Tyrant?

Jonathan Feinberg
Ta for the suggestion, but it isn't a cache solution.
brofield
A: 

Seems that later versions of memcachedb can be cleaned up manually if desired using the rget command and storing the expiry time in the data record. Of course, this means that I pound both the server and network with requests for the entire data block even though I only want the expiry time. Not the best solution but seemingly the only one currently available.

brofield
A: 

I worked with EhCache and it works very good. It has in memory cache and disk storage with differents eviction policies. It's a mature library a with good support. There is a memcached api that wraps EhCache, specially developed for GAE support.

Regards, Jonathan.

Jonathan Barbero
Hi Jonathon. Thanks for your reply. I have looked into EhCache but I couldn't earlier, and still can't find a memcached api wrapper. Would you supply a link to it for me please?
brofield
Sorry, I was wrong. It's not an memcache api wrapper, it's a way to use memcacheg from ehcache to combine the two cache solutions.http://ehcache.org/documentation/googleappengine.html
Jonathan Barbero