本地Cache缓存的使用

 引用pom版本

<dependency>
    <groupId>com.google.guava</groupId>
    <artifactId>guava</artifactId>
    <version>22</version>
</dependency>

如下测试代码:

public class test {

    private volatile static Cache<String, Boolean> userCache;

    static {
        userCache = CacheBuilder.newBuilder()
                //设置写缓存后n秒钟过期
                .expireAfterWrite(20, TimeUnit.SECONDS)
                //设置缓存最大容量为100,超过100之后就会按照LRU最近虽少使用算法来移除缓存项
                .maximumSize(100)
                .build();
    }

    public static void main(String[] args) {
        String userId = "A10220";
        Boolean userDone = userCache.getIfPresent(userId);
        if (userDone == null) {
            //接口进行一些处理
            userCache.put(userId, true);
            System.out.println("重新设置:" + userCache.getIfPresent(userId));
        } else {
            System.out.println("已经设置:" + userCache.getIfPresent(userId));
        }
    }
}

Guava Cache了解(JVM 堆内缓存):

1:很好的封装了get、put操作,能够集成数据源 ;

2:线程安全的缓存,与ConcurrentMap相似,但前者增加了更多的元素失效策略,后者只能显示的移除元素;
3:Guava Cache提供了三种基本的缓存回收方式:基于容量回收、定时回收和基于引用回收。定时回收有两种:按照写入时间,最早写入的最先回收;按照访问时间,最早访问的最早回收;
监控缓存加载/命中情况

public static Map<String, Boolean> WECHATPY_COMMON_MAP = new ConcurrentHashMap<>();也可以使用这种Map来缓存值,就没有了移除策略,缓存少量值没有影响,缓存值不可计量时,会有内存溢出的风险

Guava Cache堆内缓存,只能在单个节点中使用,适用场景:

1:保存第三方链接;2:程序中需要判断,改动频率小的设置(可以通过缓存提高查询性能)3:防抖操作等

分布式场景下可以使用 Redis、Memcached共享内存,根据场景是否适用来选择

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值