1

Google Guava を使用したキャッシュは初めてですが、いくつか問題があります。以下のコードを見てください。それは簡単です。以下は私の質問とコードです。1.testGuavaCache("6048698068");別のクラスからメソッドを呼び出すときはいつでも - それは常に毎回メソッドを実行します - generateDataFromDAO();. このメソッドは、最初はメモリに存在しないときにキャッシュされ、次回はメモリから提供されるため、一度だけ呼び出されるべきではありません。お早い回答有難う御座います。

public class GuavaCach{
    private static Logger objLogger = Logger.getLogger(WordToPDF.class);    
    LoadingCache<String, String> guavaCache = CacheBuilder.newBuilder()
        .maximumSize(10000)
        .build(
            new CacheLoader<String, String>() {
            public String load(String key) throws Exception {   
                objLogger.debug("-----KEY IN LOAD BEFORE calling generateDataFromDAO------->" + key + "<-------");
                String out =  generateDataFromDAO();
                objLogger.debug("-----out after calling generateDataFromDAO------->" + out + "<-------");
                return out;
            }
    });

    public String testGuavaCache(String key) throws IOException {
        String dataFromDAO = null;
        objLogger.debug("-----Entering testGuavaCache-----");
        try {
            dataFromDAO = guavaCache.get(key);
        } catch (ExecutionException e) {
            e.printStackTrace();
        }
        return dataFromDAO; 
    }         

    public String generateDataFromDAO() throws PreviewErrorMsg, IOException {
        objLogger.debug("-----Entering generateDataFromDAO-----");
        String data = "GeneratedDataFromDAO";       
        return data;
    }
}

別のクラスで-私は上記を呼び出しています:

GuavaCach gCache = new GuavaCach(); gCache..testGuavaCache("6048698068");

4

1 に答える 1

5

質問をするたびに新しいキャッシュ全体を作成していますが、(空の) 新しいキャッシュには回答がありません。メリットを得るには、1 つのキャッシュを作成して保持し、何度も同じ質問をする必要があります。どのように使用しているかについてはあまり投稿していませんがnew GuavaCach()、他のコードを呼び出すだけで、g.testGuavaCache(key)繰り返し呼び出す必要があります。

于 2013-08-02T15:48:59.173 に答える