0

EhCache コア 3.0 を使用しています。内部的に BaseExpiry および Eh107Expiry クラスを使用して、キャッシュの有効期限が切れているかどうかを確認します。これらのクラスは Expiry インターフェースを実装します。私の質問は、キャッシュの有効期限が切れているかどうかを確認するために使用されるメソッドを拡張できるかということです。メソッドがそのキャッシュのデータを使用している場合、時間が経過してもキャッシュの内容を期限切れにしたくありません。

4

3 に答える 3

0

xml に time-to-idle を追加するか、Expiry インターフェイスから getExpiryForAccess をオーバーライドすると、エントリにアクセスしてもエントリは削除されません。以下は、カスタム Expire を使用して Eh キャッシュを構築するコードです。説明。

        CacheConfigurationBuilder<Integer,String> cacheConfigurationBuilder = CacheConfigurationBuilder.newCacheConfigurationBuilder();
        cacheConfigurationBuilder.withExpiry(new Expiry() {
            @Override
            public Duration getExpiryForCreation(Object key, Object value) {
                return new Duration(120, TimeUnit.SECONDS);
            }

            @Override
            public Duration getExpiryForAccess(Object key, Object value) {
                return new Duration(120, TimeUnit.SECONDS);
            }

            @Override
            public Duration getExpiryForUpdate(Object key, Object oldValue, Object newValue) {
                return null;
            }
        })
                .usingEvictionPrioritizer(Eviction.Prioritizer.LFU)
                .withResourcePools(ResourcePoolsBuilder.newResourcePoolsBuilder().heap(200, EntryUnit.ENTRIES))
                        // adding defaultSerializer config service to configuration
                .add(new DefaultSerializerConfiguration(CompactJavaSerializer.class, SerializerConfiguration.Type.KEY))
                .buildConfig(Integer.class, String.class);
于 2016-12-09T12:43:18.510 に答える