在Java中缓存一个Map

3

我正在编写一个方法methodA(),通过访问Amazon S3中的对象返回一个Map<String,String>。这个方法将会被每小时数千次调用。我想要每天从S3获取一次对象,并在本地缓存中维护所有方法调用的这个Map。我的做法应该是什么?


你是为长时间运行的应用程序缓存它吗?还是为多个应用程序或同一应用程序的多次运行缓存它?缓存对象是否会被修改,如果是,更改需要传播到多远?缓存必须支持多个应用程序的并发访问吗? - John Bollinger
缓存对象将不会被修改。我还没有开始缓存它,但我的初始问题是,我应该缓存那个映射表,而不是每次从S3获取它。如果问题不太清楚,请见谅。 - Sudheer Y
问题并不是不清楚,而是缺乏必要的细节,并且非常开放式。通过在原始问题“如何缓存?”中添加“我应该缓存吗?”你甚至进一步扩大了它。SO问题不是用来征求讨论的。 - John Bollinger
1
你可以采用 guavaLoadingCache,并设置一天一次的清除策略。或者使用具有相同功能的 Caffeine。 - Eugene
谢谢Eugene!我刚刚使用LoadingCache实现了它,它运行得很好。 - Sudheer Y
1个回答

0

使用地图可以解决这个问题,但您还必须确保在必要时清除缓存。

如果您有多个应用程序实例,则可能需要考虑共享缓存,例如Redis数据库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接