多级缓存之本地热点缓存实现(guava cache)

21 篇文章 0 订阅
14 篇文章 0 订阅

多级缓存

在提高系统性能时,使用了多级缓存的理念,尤其是对于热点数据的访问,如何能够在保证服务稳定性的前提下为更多的用户提供良好的用户体验缓存起到了尤为重要的作用。

缓存设计原则

  1. 使用快速存取的设备,所以尽量使用内存
  2. 将缓存推到离用户最近的地方,可以更快的为用户提供服务
  3. 脏缓清理。使用缓存就会有数据丢失的特点,数据更新之后,缓存中的数据有可能变成脏数据,所以对于缓存并不是所有的数据都需要,而且要求对脏读不敏感才可以使用,其余情况要根据具体需求确定如何使用。

缓冲方式

  1. Redis缓存
  2. 热点数据本地缓存(内存)
  3. Nginx缓存

本地热点缓存

要实现本地热点缓存,使用的是Guava cache组件

Google Guava 工具类

Google Guava 工具类是Google公司封装了平常用的方法,不需要再重复造轮子,节约开发人员时间,提高工作效率而开发的。

guava优点

  1. 高效设计良好的API,
  2. 遵循高效的java语法实践
  3. 使代码更刻度、简洁、简单
  4. 节约时间、资源、提高生产力

guava核心库

  1. 基本工具(basic utilities)
  2. 集合(collections)
  3. 缓存(caches)
  4. 函数式风格(functional idioms)
  5. 并发(concurrency)
  6. 字符串处理(strings)
  7. 原生类型(primitives)
  8. 区间(ranges)
  9. I/O
  10. 散列(hash)
  11. 事件总线(eventbus)
  12. 数学运算(math)
  13. 反射(reflection)

使用Guava cache

pom文件引入依赖
   <dependency>
      <groupId>com.google.guava</groupId>
      <artifactId>guava</artifactId>
      <version>18.0</version>
    </dependency>
使用

新建CacheServer,定义get和set方法

public interface CacheService {

    void setCommonCache(String key,Object value);

    Object getFromCommonCache(String key);

}

server实现层

@Service
public class CacheServiceImpl implements CacheService {

    private Cache<String,Object> commonCache = null;

    @PostConstruct
    public void init(){
        commonCache = CacheBuilder.newBuilder()
                //设置缓存容器的初始容量为10
                .initialCapacity(10)
                //设置缓存中最大可以存储100个KEY,超过100个之后会按照LRU的策略移除缓存项
                .maximumSize(100)
                //设置写缓存后多少秒过期
                .expireAfterWrite(60, 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);
    }
}

读取本地缓存的方式:

  //先取本地缓存
        itemModel = (ItemModel) cacheService.getFromCommonCache("item_"+id);

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值