Memcache Java API / expiration time issue
Ryan Boyce
ryan at ioffer.com
Tue Nov 9 01:46:29 PST 2004
We're running memcached 1.1 server, and using Java memcached client
API. Suddenly after storing data variables onto server, we'd receive an
exception in retrieving variables back:
#############################################
com.danga.MemCached.MemCachedClient Tue Nov 09 01:04:20 PST 2004 - ++++
ClassNot
FoundException thrown while trying to deserialize for key: userObj
com.danga.MemCached.MemCachedClient Tue Nov 09 01:04:20 PST 2004 - ++++
exception thrown while trying to get object from cache for key: userObj
com.danga.MemCached.MemCachedClient Tue Nov 09 01:04:20 PST 2004 - +++
failed while trying to deserialize for key: userObj
java.io.IOException: +++ failed while trying to deserialize for key:
userObj
at
com.danga.MemCached.MemCachedClient.loadItems(MemCachedClient.java:10
84)
at
com.danga.MemCached.MemCachedClient.get(MemCachedClient.java:850)
at
com.danga.MemCached.MemCachedClient.get(MemCachedClient.java:816)
at _test__jsp._jspService(_test__jsp.java:61)
com.danga.MemCached.SockIOPool Tue Nov 09 01:04:20 PST 2004 - ++++
SockIOPool shutting down...
com.danga.MemCached.SockIOPool Tue Nov 09 01:04:20 PST 2004 - ++++
closing all internal pools.
com.danga.MemCached.SockIOPool Tue Nov 09 01:04:20 PST 2004 - ++++
SockIOPool finished shutting down.
#########################################
While standard Java objects like Integer can still be retrievied
correctly, the expiration set and replace commands do not work
correctly:
a call to memClient.set(key, var, expireTime) would immediately expire
the variable. I found that out by immediately calling get on that
variable:
MemCachedClient mc = new MemCachedClient();
String numberKey = "numberKey";
Integer num = (Integer)mc.get(numberKey);
if ( num == null )
{
num = new Integer(49);
out.println("Cached number "+ num +" is NOT found "+ (new
java.util.Date()) );
Calendar later = Calendar.getInstance();
later.add(Calendar.MINUTE, 5);
java.util.Date laterTime = later.getTime();
out.println("Storing number "+ num +" : "+ mc.set(numberKey, num) );
//out.println(" expiring at "+ laterTime );
num = (Integer)mc.get(numberKey);
out.println("search number back again: "+ num );
}
else
{
out.println("Cached number "+ num +" is found "+ (new
java.util.Date()) );
Calendar later = Calendar.getInstance();
later.add(Calendar.HOUR, 1);
java.util.Date laterTime = later.getTime();
//out.println("set number "+ num +" : "+ mc.set(numberKey, num,
laterTime) +" expiring at "+ laterTime );
num = new Integer( num.intValue() + 1 );
out.println("replace number "+ num +" : "+ mc.replace(numberKey,
num, laterTime ) +" to new value "+ num.intValue() +" expiring "+
laterTime);
num = (Integer)mc.get(numberKey);
out.println("search number back again: "+ num );
}
#### Codes
####################################################
#### Output
( 1st call )
Cached number 49 is NOT found Tue Nov 09 01:11:02 PST 2004 Storing
number 49 : true search number back again: 49
( 2nd call )
Cached number 49 is found Tue Nov 09 01:10:48 PST 2004
set number 49 : true expiring at Tue Nov 09 01:11:48 PST 2004 search
number back again: null
Thank You,
Ryan Boyce
Visit www.ioffer.com
An easier way to buy and sell
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.danga.com/pipermail/memcached/attachments/20041109/ca491ff1/attachment-0001.html
More information about the memcached
mailing list