Guava cache 用法学习

1、介绍

  • 一般来说,redis是作为缓存数据库的能手,但是它却会受限于磁盘io的性能和远程网络的原因存在瓶颈,于是便有了我们的本地热点缓存,这里的本地内存是jvm内部的内存,属于堆栈的内存信息,可想而知这部分的内存资源特别的宝贵,不能吧所有的东西都存入到这里,而是应该存一些热点数据。
  • 热点数据就是每秒钟会被访问上千上万的数据,这样会减少网络开销。对于本地热点缓存它要求的特点是内存可控以及设置超时时间,还可以配置lru的策略,线程安全。
  • 因此考虑,在下面情况下可以考虑使用guava cache:
    • 1、愿意消耗一些内存空间来提升速度
    • 2、预料到某些键会被多次查询
    • 3、缓存中存放的数据总量不会超出内存容量

2、使用

2.1 引入依赖
   <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>19.0</version>
    </dependency>
2.2 封装本地缓存操作类
 * 封装本地缓存操作类
 */
public interface CacheService {
    //存方法
    void setCommonCache(String key,Object value);
    //取方法
    Object getFromCommonCache(String key);
}
2.3 通过cachebuild来生成缓存,并init操作
@Service
public class CacheServiceImpl implements CacheService {
    private Cache<String,Object> commonCache=null;

    //在类加载的时候优先执行
    @PostConstruct
    public void init(){
        commonCache= CacheBuilder.newBuilder()
                //设置缓存的初始容量为10
                .initialCapacity(10)
                //设置缓存中最大可以存储的容量为100
                .maximumSize(100)
                //设置过期时间
                .expireAfterWrite(30, TimeUnit.SECONDS).build();
    }
    @Override
    public void setCommonCache(String key, Object value) {
        commonCache.put(key,value);
    }

    @Override
    public Object getFromCommonCache(String key) {
        return commonCache.getIfPresent(key);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值