我想在谷歌应用引擎中使用内存缓存,我是这样实现的:
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 个项目