0

Google App Engine で memcache を使用したいのですが、次のように実装しました。

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 を返すことです。Google アプリ エンジンを調べたところ、memcache 内のオブジェクトであることがわかりました。キーは Java 文字列です。キーと値の両方が Serializable を実装します。

ヒット数: 0 ミス数: 31522 ヒット率: 0% アイテム数: 15 アイテム

4

0 に答える 0