温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

springboot caffine缓存的简介及demo是怎样的

发布时间:2021-09-29 17:52:04 来源:亿速云 阅读:502 作者:柒染 栏目:大数据

这篇文章将为大家详细讲解有关springboot caffine缓存的简介及demo是怎样的,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

Caffeine是使用Java8对Guava缓存的重写版本,在Spring 5.0或者Spring Boot 2.0中将取代,基于LRU算法实现,支持多种缓存过期策略。
那么为什么这么好的东西需要被淘汰呢,如果对于本地Cache有过深入研究的人应该知道LRU算法基本可以满足大部分的场景,但是很多人为了精益求精,基于LRU的算法,又在此基础上提出了一系列更好的,更有效果的淘汰策略。比如有ARC,LIRS和W-TinyLFU等都提供了接近最理想的命中率,他们这些算法进一步提高了本地缓存的效率。

Caffeine配置说明:
initialCapacity=[integer]: 初始的缓存空间大小
maximumSize=[long]: 缓存的最大条数
maximumWeight=[long]: 缓存的最大权重
expireAfterAccess=[duration]: 最后一次写入或访问后经过固定时间过期
expireAfterWrite=[duration]: 最后一次写入后经过固定时间过期
refreshAfterWrite=[duration]: 创建缓存或者最近一次更新缓存后经过固定的时间间隔,刷新缓存
weakKeys: 打开key的弱引用
weakValues:打开value的弱引用
softValues:打开value的软引用
recordStats:开发统计功能
注意:
expireAfterWrite和expireAfterAccess同时存在时,以expireAfterWrite为准。
maximumSize和maximumWeight不可以同时使用
weakValues和softValues不可以同时使用
  •  

springbootApplication开启缓存支持:@EnableCaching// 开启缓存,需要显示的指定

maven 引入:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
    <groupId>com.github.ben-manes.caffeine</groupId>
    <artifactId>caffeine</artifactId>
</dependency>
demo:
import com.github.benmanes.caffeine.cache.Caffeine;
import org.springframework.cache.caffeine.CaffeineCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
@Configuration
public class CacheConfig {

   private static final int DEFAULT_MAXSIZE = 10;
   private static final int DEFAULT_TTL = 15 * 60;

   /**
    * 个性化配置缓存
    */
   @Bean(name = "caffeineCache")
   public CaffeineCacheManager cacheManager() {
      CaffeineCacheManager cacheManager = new CaffeineCacheManager();
      Caffeine caffeine = Caffeine.newBuilder()
            //cache的初始容量值
            .initialCapacity(10)
            .expireAfterWrite(DEFAULT_TTL,TimeUnit.SECONDS)
            //maximumSize用来控制cache的最大缓存数量,maximumSize和maximumWeight不可以同时使用,
            .maximumSize(DEFAULT_MAXSIZE);
      cacheManager.setCaffeine(caffeine);
      cacheManager.setCacheNames(getNames());
      return cacheManager;
   }

   private static List<String> getNames(){
      List<String> names = new ArrayList<>(2);
      names.add("datainterface");
      return names;
   }

}
 

关于springboot caffine缓存的简介及demo是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI