2017-04-30 15 views
0

Java 8を使用している場合、concurrentedLinkedHashmapの作成者はカフェインに切り替えるためのアドバイスを行います。 私はキャッシュの最も古い要素をどのように取得できるのか知りたかったのです。 (LinkedHashMapでは、これを実現するためにイテレータの最初の要素を削除できます)。カフェインキャッシュは、最も古い要素を取得します

残念ながら、私はカフェインのドキュメントで何も見つかりませんでした。

+0

参照してください。[ポリシー](HTTPS://

加えて、一定時間後または要素の特定の番号の後に最古要素の削除を処理するためにCacheWriterまたはRemovalListenerを追加することが可能ですgithub.com/ben-manes/caffeine/wiki/Policy)、たとえばウォームリスタートの最もホットなエントリを維持します。 –

+0

しかし、私はエントリが自動的に時間の経過後にそれらを破壊したくない場合。私はcache.oldestを試みたが、そのメソッドは存在しなかった。 – user2524707

+1

cache.policy()。eviction()。get()。coldest(1)がピークになります。キャッシュされている場合、キャッシュはある時点で自動的に追い出されます。 –

答えて

0
Cache.policy().eviction().get().coldest(1) 

は最も古い要素を返します。

new CacheWriter<Long, List<IOperation>>() 
      { 
       @Override 
       public void write(@NotNull final Long key, @NotNull final List<IOperation> value) 
       { 
        //On addition 
       } 

       @Override 
       public void delete(@NotNull final Long key, @Nullable final List<IOperation> value, @NotNull final RemovalCause cause) 
       { 
        //On removal 
       } 
      }) 
関連する問題