Appengine 共享内存缓存不存储数据



我在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。什么都没用。但是,仍然不知道为什么突然会这样?请帮我弄清楚。

您的源代码没有更改,但运行时库的版本已更改,这一事实表明旧的运行时库能够序列化您的 retVal 对象,而新的运行时库以静默方式无法做到这一点,从而导致空值。 尝试更改要提交到缓存的内容的类型,例如,在设置之前转换为字符串,并在获取后将字符串转换回对象。 当然,这需要一些努力,但是如果您使用 Object,您将找不到解决此问题的灵丹妙药。

最新更新