Appengine Shared Memcache不存储数据

时间:2014-03-05 16:26:28

标签: java google-app-engine memcached google-cloud-datastore

我在Java中使用Appengine Shared Memcache。突然间它停止了存储,甚至没有抛出任何异常。我的实现如下,

   public class MemcachedUtil 
   {

           public static final int ONE_DAY_SECONDS=86400;
           public static final int ONE_DAY_MILLISECONDS=86400000;
           public static final int ONE_HOUR_SECONDS=3600;
           public static final int ONE_HOUR_MILLISECONDS=3600000;

         public static void set(String key,Object value,String namespace)
        {
    MemcacheService srv=MemcacheServiceFactory.getMemcacheService(namespace);
    srv.put(key,value, Expiration.byDeltaSeconds(ONE_DAY_SECONDS)); 
         }
             ............ // Get / GetAll / Set methods like above.... declared.
   }


     In another class , i am implementing like follows....
...
     MemcachedUtil.set("salePrice_"+highToLow+"_"+pageNo, retVal, "Test"); // Set
     MemcachedUtil.get("salePrice_"+highToLow+"_"+pageNo, "Test"); // Get

并给出如下的到期时间,

    public static final int ONE_DAY_SECONDS=86400;
    public static final int ONE_DAY_MILLISECONDS=86400000;
    public static final int ONE_HOUR_SECONDS=3600;
    public static final int ONE_HOUR_MILLISECONDS=3600000;

任何人都知道为什么会这样?即使我已经更新了Appengine SDK 1.9.0并尝试了专用的memcache。什么都行不通。但是,甚至不知道为什么会突然间呢?请帮我解决。

1 个答案:

答案 0 :(得分:0)

您的源代码没有更改,但运行时库的版本已更改,这表明旧的运行时库能够序列化您的retVal对象,并且新的运行时库默默地无法执行此操作,从而导致空值。尝试更改提交到缓存的内容类型,例如在设置之前转换为String并在get之后将String转换回对象。当然,这需要一些努力,但如果您使用Object,则无法找到解决此问题的灵丹妙药。