接下来几篇给大家分享一下缓存相关的内容,包括但不限于Guava,JetCache和Spring Cache等。
Guava产生的背景
最常见最简单的方式就是我们使用HashMap或者ConcurrentHashMap,在内存中缓存数据,通过key存放value,通过key读取我们需要的value数据。但是这里存在一个问题,value是会过期的。所以我们还得需要设置一个定时器,根据业务和数据变化要求,每隔一段时间进行缓存更新,保证读取的是更新的value。另外如果需要对缓存的数据做更精准的失效控制,还得自己写一套回收策略的代码,这相对来说是很麻烦的。但是Guava已经帮你考虑到这些了。
Guava的使用场景
Guava也并不是万能的,在使用之前我们先说说使用场景,看看业务中使用Guava缓存是否能够解决问题。
场景1:Guava属于本地内存缓存,非分布式缓存,适用于对数据实时性不高,但也有一定要求。所以使用Guava就需要牺牲一定的内存空间。
场景2:本地缓存至少会查询到1次,保证Guava起码是能够真正起到缓存加速作用的。
Guava案例分析
@Test
public void testCacheUse() throws Exception{
LoadingCache<String, SkuCache> loadingCache = CacheBuilder.newBuilder()
.expireAfter