首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >强制在特定时间刷新番石榴缓存

强制在特定时间刷新番石榴缓存
EN

Stack Overflow用户
提问于 2015-12-15 00:14:24
回答 1查看 3.2K关注 0票数 1

我试着让这个缓存每天凌晨3点刷新问题是,用户需要等待很长时间才能使缓存升温。因此,我宁愿在一夜之间刷新它,并准备在早上为UI快速访问。

代码语言:javascript
运行
复制
    return CacheBuilder.newBuilder()
            .maximumSize(1000)
            .expireAfterAccess(1, TimeUnit.DAYS)
            .build(new CacheLoader<String, Long>() {
                @Override
                public Long load(String key)
                        throws Exception {
                        return db.getMetrics(key);
                }
            });

我希望能够在缓存中提供一组固定的密钥,以便在凌晨3点刷新。

我读过Google文档,但似乎只刷新已经加载到缓存中的数据。

TL;DR -寻找在一天中的特定时间用一组固定的键来预热缓存。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-15 15:17:37

据我所知,番石榴没有任何内置的“清新”/“温暖”值的一组键在一些预定的时间,但你可以很容易地做你自己。

升温缓存

您可以通过简单地在getAll(Iterable)实例上调用LoadingCache<String, Long>来取暖现金。例如:

代码语言:javascript
运行
复制
loadingCache.getAll(keysToFreshen);

其中keysToFreshenIterable<String>的一个实例,包含您希望在凌晨3点(或任何时候)刷新的键(例如,Set<String>)。

使用作业/任务计划程序运行缓存升温代码

现在只需使用工具运行loadingCache.getAll(keysToFreshen),将作业/任务安排在凌晨3点。您可以使用石英春天、Java的ScheduledExecutorService (参见这里中的示例)等。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34278928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档