Hello Folks,

I have started to think/hack around having a server implementation to
store object in a direct memory cache (something "à la" memcached).

Before discussing about api (fluent or not) having ugly names for
methods or not ( :P ).
I'd like to share with you my ideas (and get your feedback).

Basically I have something in mind to ease users life:
* retrieve this object with this key (sync and async methods)
* store this object with this key and with this serializer. (sync and
async methods)
* delete an entry (sync and async methods)

The de/serialization is done on client side and exchange are done tru
REST (json) over http(s). (Maybe adding later too a "raw" servlet with
parameters passed as headers)

REST Api ideas.

retrieve object :
GET on ${webPath}/directMemory/retrieve/${key}

return json content if found

{"DirectMemoryRS":{"key":"101","cacheContent":"Zm9vIGJhcg=="}}

cacheContent is byte[] from serialization.

If no cache entry found for the key, http code returned will be 204
(No Content) but client api will receive a DirectMemoryCacheResponse
object with found field to false.

store object

PUT on ${webPath}/directMemory/store

json content posted

{"DirectMemoryRQ":{"key":"101","expiresIn":123,"cacheContent":"rO0ABXNyACtvcmcuYXBhY2hlLmRpcmVjdG1lbW9yeS5zZXJ2ZXIuY29tbW9ucy5XaW5l5dYKhxyAjeECAAFMAARuYW1ldAASTGphdmEvbGFuZy9TdHJpbmc7eHB0AAhCb3JkZWF1eA==","serializer":"org.apache.directmemory.serialization.StandardSerializer"}}

(serializer is for information and if available on server classLoader
could be use for a toString in the web ui).

delete an entry:

DELETE on ${webPath}/directMemory/delete/${key}

200 if ok, 204 if the key was not found.

Goodies: the webapp will have an ui to display some figures on cache
hit ratio, number of stored elements etc...

Let me know if that makes sense and I can start push some hack :-)

-- 
Olivier Lamy
Talend: http://coders.talend.com
http://twitter.com/olamy | http://linkedin.com/in/olamy


PS: FYI, Benoit has proposed a talk with myself to devoxxfr
(http://devoxx.fr/) and it has been accepted (wOOT really cool :-) ).
We hope to see you there :-).

Reply via email to