Java:本地缓存之google guava cache使用

本文介绍了Google Guava Cache在Java中的应用,强调了其作为内存缓存的优势,如提高数据访问速度和自动回收机制。文章讨论了适用场景,包括高频率数据访问和小规模数据存储,并探讨了如何通过缓存加载器、Callable方法和直接插入缓存来实现不同的缓存用例。重点讲述了使用get方法和Callable进行原子性加载以及如何直接更新缓存中的数据。
摘要由CSDN通过智能技术生成

缓存在各种各样的系统中都非常有用。例如,当一个值的计算或检索成本很高时,您应该考虑使用缓存。

缓存类似于ConcurrentMap,但不完全相同。最基本的区别是,ConcurrentMap将所有添加到其中的元素持久化,直到它们被显式删除。另一方面,缓存通常被配置为自动收回条目,以限制其内存占用。在某些情况下,LoadingCache 可能很有用,即使它没有逐出条目,因为它是自动加载缓存的。

适用场景

1)使用内存提高数据访问速度

2)数据访问频率比较高

3)数据量不大,且不应该超过你的服务器内存(如果存放大量数据,应该使用Redis或者Memcache)

 

缓存用例

关于缓存的第一个问题是:是否有一些合理的默认函数来加载或计算与键关联的值?如果是,则应使用缓存加载器。如果不是,或者如果需要重写默认值,但仍然需要原子“get if absent compute”语义,则应将可调用的传递到get调用中。可以使用cache.put直接插入元素,但最好使用自动缓存加载,因为这样可以更容易地推断所有缓存内容之间的一致性。

从缓存加载器

public class GuavaCache {
	private LoadingCache<String, GuavaCacheData> cache;

	public GuavaCache() {
		cache = CacheBuilder.newBuilder()
			.maximumSize(1000)
			.expireAfterWrite(10, TimeUnit.SECONDS)
			.build
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值