zoukankan      html  css  js  c++  java
  • GuaVa缓存应用

    LoadingCache<String, List<Order>> cacheOrders = CacheBuilder.newBuilder()
    .expireAfterWrite(1, TimeUnit.MINUTES)//表示在写入内存1分钟后该数据过期
    .expireAfterAccess(1, TimeUnit.MINUTES)//表示如果1分钟之内没有使用该缓存则数据过期 每调用一次缓存有效时间都刷新为一分钟
    .refreshAfterWrite(1, TimeUnit.MINUTES)//只阻塞当前数据加载线程,其他线程返回旧值
    .concurrencyLevel(8)//设置并发级别为8,并发级别是指可以同时写缓存的线程数
    .maximumSize(100)//设置最大缓存数 超过限制采用最少使用淘汰机制
    .build(new CacheLoader<String, List<Order>>() {
                /**  当本地缓存命没有中时,调用load方法获取结果并将结果缓存
    */
    @Override
    public List<Order> load(String key) {
    return getOrders();
    }

    // 此时一般我们会进行相关处理,如到数据库去查询
    private List<Order> getOrders() {
    List<Order> orderList = (List<Order>) redisUtil.hmGet(redisTemplate, ControlConstants.RTB_OF_ORDER, ControlConstants.DSP_RTB_AREA_DEAL);
    log.info("缓存失效重新获取订单" + orderList.size());
    return orderList;

    }
    });

    当然,除此之外,缓存还有其他初始化设置,例如设置要统计缓存的命中率等,guava的缓存还可以以异步线程的方式刷新本地的缓存,这里不做详细说明
  • 相关阅读:
    查看linux服务器CPU相关
    Innobackupex(xtrabackup)物理备份
    给xen虚拟机添加硬盘分区格式化
    快速做ssh免密钥登陆
    windows基本命令大全
    linux系统下python升级安装
    快速安装Java环境
    「十二省联考 2019」骗分过样例
    「十二省联考 2019」皮配
    「SNOI2019」积木
  • 原文地址:https://www.cnblogs.com/xiaohan666/p/10901118.html
Copyright © 2011-2022 走看看