咖啡因缓存,获得最古老的元素

时间:2017-04-30 13:36:51

标签: java caching caffeine

由于concurrentedLinkedHashmap作者建议在使用java 8时切换到咖啡因。 我想知道如何获取缓存中最旧的元素。 (在LinkedHashMap中,我能够删除迭代器的第一个元素来实现这一点)。

不幸的是,我在咖啡因文件中找不到任何内容。

1 个答案:

答案 0 :(得分:0)

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

将返回最旧的元素。

此外,可以添加CacheWriter或RemovalListener来处理在一定时间之后或在一定数量的元素之后删除最旧的元素:

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
                }
            })