springboot 使用缓存

Spring  使用缓存,在不明确表明使用的cacheManager时,使用系统默认方案。可供选择的方案有:AbstractCacheManagerAbstractTransactionSupportingCacheManagerCaffeineCacheManagerCompositeCacheManagerConcurrentMapCacheManagerEhCacheCacheManagerGuavaCacheManagerJCacheCacheManagerNoOpCacheManagerSimpleCacheManagerTransactionAwareCacheManagerProxy

 

常用GuavaCache

方式一:

 在一个component里定义如下:

private static LoadingCache<String, List<DictItem>>cache = null;

 public void  init(){
	    	
	    	cache = CacheBuilder.newBuilder().maximumSize(1000).refreshAfterWrite(1, TimeUnit.DAYS)
					.build(new CacheLoader<String, List<DictItem>>() {
						@Override
						public List<DictItem> load(String key) throws Exception {
							Map<String, List<DictItem>> map=utilDao.getDicts();
							map.forEach((K,V)->{
								cache.put(K, V);
							});
							return cache.get(key);
						}
					});
	    	Map<String, List<DictItem>> map=utilDao.getDicts();
			map.forEach((K,V)->{
				cache.put(K, V);
			});
	    	
	    }
第一次查询是若无,会调用load方法加载,使用的时候,只要:

cache.get(fldms[i])即可。


方式二:

事先不知道缓存里存什么。产生时才存入:

定义缓存先:

 publicstatic final StringUSER_CACHE = "CACHE_KEY";


    @Bean

    public Cache reportCache() {

        return new GuavaCache(USER_CACHE, CacheBuilder.newBuilder()

                .maximumSize(10)

                .expireAfterWrite(1, TimeUnit.DAYS)

                .build());

    }

然后在产生要缓存的数据的方法里:

  @Cacheable(CacheConfig.USER_CACHE)

    public Map<String,Item> getCacheMap(){

        return getCacheMap();

    }

 @Cacheable表示方法的结果是缓存的,下次调用方法时,直接从缓存里取数据。而不是真正执行方法

    @CachePut(CacheConfig.USER_CACHE)

    public Map<String,Item> refreshCache(){

        return getCacheMap();

    }

   @CachePut 更新缓存里对应的值
一直不太会编辑代码格式。抱歉。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值