Guava:缓存
一、适用性
缓存在广泛的使用场景里特别的有用。例如,当一个计算或取回一个值当代价特别大,并且通过一个确定的输入获取一个值超过一次的时候,你应该使用缓存。
一个Cache
类似于ConcurrentMap
,但是并不完全相同。最基本的不同是ConcurrentMap
会保存所有添加进入它的元素,直到明确移除。另一个方面,Cache
为了考虑到内存占用,通常配置成自动驱逐项。在一些情况下,由于自动的缓存加载,LoadingCache
不配置驱逐条目,也是有用的。
通常情况下,Gauva缓存工具可以应用在下面的情况:
-
你将花费内存来提升速度;
-
你预期那个key要查询超过一次;
-
你的缓存不需要存储超过RAM容量的数据;
Guava缓存是加载到你运行的单个应用的本地。它们不把数据存到文件中,或外面的服务器。如果这不符合你的需求,考虑使用像Memcached工具。
如果上面这些都适合你的应用场景,那么Guava Cache对你就是好的选择。
通过CacheBuilder
构造器模式获取一个Cache
的代码示例展示在下面。但是自定义你的缓存是更有趣的部分。
注意,如果你不需要Cache
的特性,ConcurrentMap
更有效。但是它是极其困难或不可能的,复制更多的缓存特