【问题标题】:Appengine Shared Memcache not storing dataAppengine Shared Memcache 不存储数据
【发布时间】:2014-04-07 20:17:35
【问题描述】:

我在 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 并尝试了专用的内存缓存。没有任何效果。但是,甚至不知道为什么会突然发生这种情况?请帮我弄清楚。

【问题讨论】:

  • 不应该是srv.set()和srv.get()吗?
  • 我的类“MemcachedUtil”包含所有的集合,获取方法。编辑了我的 qn ,请检查。

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


【解决方案1】:

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

【讨论】:

  • 谢谢马丁,让我试试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多