SpringBoot 集成 Caffeine(咖啡因)最优秀的本地缓存

SpringBoot 集成 Caffeine(咖啡因)最优秀的本地缓存

  • 本地缓存
    • 为什么用Caffeine做本地缓存
    • SpringBoot2.0+如何集成 Caffeine
      • 引入依赖
      • 开启缓存
      • 容器配置
      • 驱逐策略
      • 开发使用
      • 参考博客

本地缓存

百度百科:本地缓存是指将客户机本地的物理内存划分出一部分空间用来缓冲客户机回写到服务器的数据,因其在回写上的突出贡献,因此本地缓存一般称为本地回写。本地缓存概念首次出现是在无盘领域,作为PXD无盘的一项核心技术被广泛应用。
作用:该技术将客户机回写的数据不再先写入服务器硬盘,而是将回写数据先写入本地回写缓存,当缓存空间达到一定的阈值时,再将数据回写到服务器。有了本地回写缓存功能之后,可大大降低服务器读写压力和网络负载。

个人理解:本地缓存既是将数据缓存到单台服务的jvm的内存中,分布式集群项目由于多台服务器构成,本地缓存只能保证单台服务器数据的缓存,有局限性,无法共享缓存数据,但查询效率高,适合做一级缓存,配合redis(分布式缓存,以后出文章介绍)构成多级缓存框架。

为什么用Caffeine做本地缓存

官网介绍:https://github.com/ben-manes/caffeine/wiki

Caffeine是基于Java 8的高性能缓存库,可提供接近最佳的命中率。

缓存与ConcurrentMap相似,但并不完全相同。最根本的区别是ConcurrentMap会保留添加到其中的所有元素,直到将其明确删除为止。Cache另一方面,通常将A配置为自动退出条目,以限制其内存占用量。在某些情况下,LoadingCache或者AsyncLoadingCache如果它不逐出条目,由于其自动加载缓存可能是有用的,甚至。

咖啡因提供了灵活的构造来创建具有以下功能组合的缓存:

  • 自动将条目自动加载到缓存中,可以选择异步加载
  • 基于频率和新近度超过最大值时基于大小的逐出
  • 自上次访问或上次写入以来测得的基于时间的条目到期
  • 发生第一个陈旧的条目请求时,异步刷新
  • 键自动包装在弱引用中
  • 值自动包装在弱引用或软引用中
  • 逐出(或以其他方式删除)条目的通知
  • 写入传播到外部资源
  • 缓存访问统计信息的累积

SpringBoot2.0+如何集成 Caffeine

因为SpringBoot2.0+默认使用的本地缓存就是caffeine&#x

你可能感兴趣的:(Java,缓存,java,spring,boot,spring)