zoukankan      html  css  js  c++  java
  • LoadingCache缓存使用(LoadingCache)

    • 首先需要引入先关pom依赖(项目源码参考:https://github.com/licunzhi/dream_on_sakura_rain/tree/master/loadingcache_demo

      选择合适的版本
      <!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
      <dependency>
          <groupId>com.google.guava</groupId>
          <artifactId>guava</artifactId>
          <version>24.1-jre</version>
      </dependency>
    • 在项目启动的时候注册组件Bean(使用注解@Configuration和@Bean)
      注册可以在注解Bean上面添加想要注入的名称,项目使用时可以直接使用注解注入对象
      @Configuration
      public class MyCacheConfiguration {
      
          private static final int EXPIRE_SECONDS = 86400;
      
          /**
           * 定义token缓存, 默认最大数量为3000
           */
          @Bean
          public LoadingCache<String, Object> myCacheStorage() {
              return CacheBuilder.newBuilder().maximumSize(3000).expireAfterWrite(EXPIRE_SECONDS, TimeUnit.SECONDS)
                              .build(new CacheLoader<String, Object>() {
                                  @Override
                                  public Object load(String name) throws Exception {
               //在这里可以初始化加载数据的缓存信息,读取数据库中信息或者是加载文件中的某些数据信息
      return null; } }); } }

      其中Object可以定义自己将要放入缓存中的对象类型(自定义)

    • 使用的时候和往常注册类一样实现自动注入即可
    • CacheBuilder:LoadingCache实现类,存储键值形式(本质Map)
      最常用的方法的介绍----------源码中对于各个方法的解释:
      ① 定义对象个数的限制,如果没有定义过期规则则超出限制的时候,会将最远时间最少使用的自动过期保证总数在设置的范围内

      public CacheBuilder<K, V> maximumSize(long size)

      ②定义过期时间显示(duration:设置持续时间;unit:持续时间单位【备注:右下插图为可用单位】):缓存中数值在指定时间没有值更新会过期

      public CacheBuilder<K, V> expireAfterWrite(long duration, TimeUnit unit) 

       ③同样是定义过期时间,但是这个和上面的有点区别,只要缓存中的数据被访问就会重置数据的缓存时间

      public CacheBuilder<K, V> expireAfterAccess(long duration, TimeUnit unit)

    使用时   自动注入就可以调用对象的方法put()把缓存信息放置缓存之中

    同样的使用get可以获取放入的特定的缓存信息

    个人小小总结,若有不正确之处 还望指出

    欢迎加入Java、C、C++交流群,群聊号码:589780530

  • 相关阅读:
    linux下批量转换文件
    linux的最简socket编程
    war包部署到tomcat
    linux 重命名文件和文件夹
    Thread类的常用方法
    java.lang.Integer.MAX_VALUE;这是什么意思?
    java中 在一个异常处理中什么语句块是可多个的
    oracle条件参数中 IN函数中的值最大只能为1000个
    oracle判断一个字段为空
    javascript 六种数据类型
  • 原文地址:https://www.cnblogs.com/licunzhi/p/8818838.html
Copyright © 2011-2022 走看看