本地缓存之Guava使用



使用构建者模式创建对象:
  1. 首先,我们调用了expireAfterWrite方法,它可以自动的使缓存条目在指定的时间后失效,在本例中,是5分钟。

  2. 第二步,我们通过maximumSize方法,5000作为传入值,指定了缓存的最大大小,当缓存的大小逼近到最大值时,缓存中一些最近很少使用到的条目将会被移除,不一定在缓存大小达到最大值甚至超过最大值才移除。

  3. 我们注册了一个RemovalListener监听器实例,它可以在缓存中的条目被移除后接收通知。

  4. 我们添加了一个Ticker实例,通过调用ticker方法,此方法提供了缓存条目过期的时间,纳秒级的精密度。

  5. 最后,我们调用了build方法,传入了一个新的CacheLoader实例,当缓存中的key存在,value不存在时,这个实例将被用来重新获取TradeAccount对象。

使用Demo:

LoadingCache<String, TradeAccount> tradeAccountCache = 
                CacheBuilder.newBuilder() 
                        .expireAfterWrite(5L, TimeUnit.MINUTES) 
                        .maximumSize(5000L) 
                        .removalListener(new TradeAccountRemovalListener()) 
                        .ticker(Ticker.systemTicker()) 
                        .build(new CacheLoader<String, TradeAccount>() { 
                            @Override 
                            public TradeAccount load(String key) throws 
                                    Exception { 
                                return 
                                        tradeAccountService.getTradeAccountById(key); 
                            } 
                        }); 


我们常用的就是设置过期时间即可:
private static Cache<String, List<SpZoneEntity>> cache = CacheBuilder.newBuilder()
            .expireAfterAccess(5, TimeUnit.MINUTES ).maximumSize(10).build();
pom依赖:      
<dependency>
             <groupId> com.google.guava</groupId >
             <artifactId> guava</artifactId >
             <version> 18.0</version>
</dependency>

暧昧贴