0

我使用 java memcache api 来存储与用户关联的非持久数据。每个用户都有关联的 memcache 实体存储一些属性,其中一些属性是嵌入式实体。过了一会儿,它们消失了,而其他属性(字符串、整数、布尔值)仍然存在。是有意如此,还是我的代码中遗漏了一些东西?我可以依赖存储在缓存中的实体至少一个小时或类似的东西吗?我在使用谷歌插件在本地机器上调试时看到了这种行为。我的代码是这样的:

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;
    }
}
4

1 回答 1

3

请记住,谷歌的实施不会保证任何实体都会徘徊。任何东西都可以在任何时候被驱逐。从文档:

但是,在考虑是否将值仅存储在内存缓存中而不由其他持久存储支持时,请确保当值突然不可用时,您的应用程序的行为可以接受。值可以随时从内存缓存中过期,并且可能在为该值设置的过期期限之前过期。

于 2013-03-06T05:48:26.813 回答