谷歌应用引擎嵌入实体似乎从缓存中消失



我使用java memcache api来存储与用户相关的非持久性数据。每个用户都有关联的memcache实体存储一些属性,其中一些属性是嵌入实体。一段时间后,它们消失,而其他属性(String, Integer, Boolean)保留。它是打算这样还是我在我的代码中缺少一些东西?我能依赖存储在缓存中的实体至少一个小时之类的吗?我看到这种行为时,调试本地机器与谷歌插件。我的代码是这样的:

class UserData {
    public Entity getEntity() {
        Entity ret = new Entity( "User", key );
        ret.setProperty( "property1", _integerval );
        ret.setProperty( "property2", _stringval );
        ret.setProperty( "property3", _complex.getEmbEntity() );
        return ret;
    }
    public static UserData fromEntity( Entity ent ) {
        UserData ret = new UserData();
        ret._integerval = (Integer)ent.getProperty("property1");
        ret._stringval = (String)ent.getProperty("property2");
        ret._complex.fromEmbEntity( (EmbeddedEntity)ent.getProperty("property3") );
        return ret;
    }
}

请记住,google的实现并不能保证任何实体都会挂起。任何东西都可以在任何时候被驱逐。来自文档:

但是,当考虑是否将值单独存储在Memcache和不支持其他持久存储,请确保您的当值突然不在时,应用程序的行为可以接受可用。值可以随时从memcache中过期,并且可能在为该值设置的截止日期之前过期。

最新更新