0

我想在谷歌应用引擎中使用内存缓存,我是这样实现的:

public static UserDictionary userDictionary = null;
private MemcacheService syncCache;
public static final Logger log = Logger.getLogger(UserDictionary.class.getName());

@SuppressWarnings(value = { "unchecked" })
private UserDictionary() {      
    syncCache = MemcacheServiceFactory.getMemcacheService();
    syncCache.setErrorHandler(ErrorHandlers.getConsistentLogAndContinue(Level.INFO));
}

public static UserDictionary getInstance() {
    if(userDictionary == null) {                
                userDictionary = new UserDictionary();
    }
    return userDictionary;
}


public Entity getFromCache(String userId) {     
        return (Entity) syncCache.get(userId);      
}

public void putInCache(String userId, Entity userEntity) {
    syncCache.put(userId, userEntity,Expiration.byDeltaSeconds(999999999), MemcacheService.SetPolicy.SET_ALWAYS);
}

public boolean isCacheEmpty() {
    long itemCount = syncCache.getStatistics().getItemCount();
    return itemCount == 0L;     
}

问题是在我将一个对象放入缓存然后我尝试获取它之后,get 方法返回 null。我查看了我的谷歌应用程序引擎,它显示这是内存缓存中的一个对象。关键是一个 java 字符串。key 和 value 都实现了 Serializable。

命中数:0 未命中数:31522 命中率:0% 项目数:15 个项目

4

0 回答 0