当前位置: 首页 > wzjs >正文

网站多长时间到期在线观看永久免费网站网址

网站多长时间到期,在线观看永久免费网站网址,外贸网站的特色,北京海淀区租房在现代企业级应用中,缓存是提升系统性能和响应速度的关键技术。通过减少数据库查询或复杂计算的频率,缓存可以显著优化用户体验。Spring Boot 3.4.3 提供了强大的缓存抽象支持,而 Caffeine 作为一款高性能的本地缓存库,因其优异的…

在现代企业级应用中,缓存是提升系统性能和响应速度的关键技术。通过减少数据库查询或复杂计算的频率,缓存可以显著优化用户体验。Spring Boot 3.4.3 提供了强大的缓存抽象支持,而 Caffeine 作为一款高性能的本地缓存库,因其优异的吞吐量和灵活的配置,成为许多开发者的首选。本文将详细介绍如何在 Spring Boot 3.4.3 中集成 Caffeine 实现本地缓存功能,并提供完整的代码示例,助你在2025年的开发实践中快速落地高效缓存方案。


1. Caffeine 简介
1.1 什么是 Caffeine?

Caffeine 是一个基于 Java 的高性能本地缓存库,旨在替代传统的 Guava Cache。它采用了 Window TinyLFU(W-TinyLFU)淘汰算法,提供更高的命中率和更低的内存占用。Caffeine 支持丰富的配置选项,如过期策略、容量限制和异步加载,广泛应用于需要快速响应的场景。

1.2 Caffeine 的优点
  • 高性能:优于 Guava Cache 和 ConcurrentHashMap 的吞吐量。
  • 灵活性:支持按时间、大小和引用淘汰数据。
  • Spring 集成:与 Spring Cache 无缝衔接,注解驱动开发。
  • 轻量级:无需外部服务,适用于本地缓存需求。
1.3 适用场景
  • 频繁查询的静态数据(如配置信息)。
  • 计算代价高昂的结果缓存(如复杂算法)。
  • 高并发场景下的热点数据存储。

2. 项目实战

以下是基于 Spring Boot 3.4.3 和 Caffeine 实现本地缓存的完整步骤。

2.1 添加 Maven 依赖

pom.xml 中添加必要的依赖:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.4.3</version></parent><artifactId>springboot-caffeine</artifactId><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!-- Spring Boot Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Spring Cache --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency><!-- Caffeine --><dependency><groupId>com.github.ben-manes.caffeine</groupId><artifactId>caffeine</artifactId><version>3.1.8</version></dependency></dependencies>
</project>

说明:

  • spring-boot-starter-cache:提供 Spring Cache 抽象支持。
  • caffeine:核心缓存库,版本 3.1.8 是当前稳定版。
2.2 配置 Caffeine 缓存

创建一个配置类,定义 Caffeine 的缓存属性:

package cn.joyous.config;import com.github.benmanes.caffeine.cache.Caffeine;
import org.springframework.cache.CacheManager;
import org.springframework.cache.caffeine.CaffeineCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import java.util.concurrent.TimeUnit;@Configuration
public class CacheConfig {@Beanpublic CacheManager cacheManager() {CaffeineCacheManager cacheManager = new CaffeineCacheManager();cacheManager.setCaffeine(Caffeine.newBuilder().initialCapacity(100)           // 初始容量.maximumSize(1000)             // 最大条目数.expireAfterWrite(10, TimeUnit.MINUTES) // 写入后10分钟过期.recordStats());               // 记录缓存统计信息return cacheManager;}
}

代码说明:

  • initialCapacity:初始化缓存容量。
  • maximumSize:限制最大缓存条目,超出时按 W-TinyLFU 淘汰。
  • expireAfterWrite:设置过期时间。
  • recordStats:启用统计,可用于监控命中率。
2.3 创建服务层

定义一个服务类,使用缓存注解:

package cn.joyous.service;import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;@Service
public class UserService {@Cacheable(value = "users", key = "#id")public String getUserById(Long id) {// 模拟数据库查询System.out.println("从数据库查询用户: " + id);return "User-" + id;}@CacheEvict(value = "users", key = "#id")public void deleteUser(Long id) {// 模拟删除操作System.out.println("删除用户: " + id);}
}

注解说明:

  • @Cacheable:查询时优先从缓存获取,若无则执行方法并缓存结果。
  • @CacheEvict:删除时清理指定缓存。
  • value:缓存名称,key:缓存键。
2.4 创建控制器

创建一个 RESTful 接口调用服务:

package cn.joyous.controller;import cn.itbeien.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/api")
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/user/{id}")public String getUser(@PathVariable Long id) {return userService.getUserById(id);}@DeleteMapping("/user/{id}")public String deleteUser(@PathVariable Long id) {userService.deleteUser(id);return "User " + id + " deleted";}
}
2.5 启用缓存

在启动类上添加 @EnableCaching

package cn.joyous;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cache.annotation.EnableCaching;@SpringBootApplication
@EnableCaching
public class CaffeineApplication {public static void main(String[] args) {SpringApplication.run(CaffeineApplication.class, args);}
}
2.6 测试缓存功能
  1. 启动应用。
  2. 访问 http://localhost:8080/api/user/1,控制台输出“从数据库查询用户: 1”。
  3. 再次访问相同 URL,无控制台输出,说明命中缓存。
  4. 调用 DELETE http://localhost:8080/api/user/1,缓存被清除,下次查询重新加载。

3. 进阶功能(可选)
  1. 多级缓存配置
    支持不同缓存策略:

    @Bean
    public CacheManager cacheManager() {CaffeineCacheManager cacheManager = new CaffeineCacheManager("users", "configs");cacheManager.setCaffeineCache("users", Caffeine.newBuilder().maximumSize(1000).expireAfterWrite(10, TimeUnit.MINUTES).build());cacheManager.setCaffeineCache("configs", Caffeine.newBuilder().maximumSize(500).expireAfterAccess(1, TimeUnit.HOURS).build());return cacheManager;
    }
    
  2. 异步加载
    支持异步缓存填充:

    @Bean
    public CacheManager cacheManager() {CaffeineCacheManager cacheManager = new CaffeineCacheManager();cacheManager.setCaffeine(Caffeine.newBuilder().expireAfterWrite(10, TimeUnit.MINUTES).maximumSize(1000));cacheManager.setAsyncCache(true);return cacheManager;
    }
    
  3. 缓存统计
    查看命中率:

    @Autowired
    private CacheManager cacheManager;public void printStats() {CaffeineCache cache = (CaffeineCache) cacheManager.getCache("users");System.out.println(cache.getNativeCache().stats());
    }
    

4. 总结

Spring Boot 3.4.3 结合 Caffeine 提供了一种高效的本地缓存实现方案。通过简单的配置和注解,你可以在项目中快速集成缓存功能,提升性能并减少数据库压力。Caffeine 的高性能和灵活性使其成为替代传统缓存工具的理想选择。


文章转载自:

http://AKziKZIK.xrqkm.cn
http://iI3xbxTZ.xrqkm.cn
http://PwvwrONS.xrqkm.cn
http://cVpmeyCN.xrqkm.cn
http://bf5vjxDU.xrqkm.cn
http://bqlppL9a.xrqkm.cn
http://lVA6is8o.xrqkm.cn
http://cExebfwQ.xrqkm.cn
http://dnDnzBbt.xrqkm.cn
http://V4yFLnlG.xrqkm.cn
http://LuafTkLb.xrqkm.cn
http://Mpp87Ev0.xrqkm.cn
http://L1JupwDv.xrqkm.cn
http://981ASxiG.xrqkm.cn
http://AATQSBvZ.xrqkm.cn
http://87FmfCcX.xrqkm.cn
http://gMH1wsy7.xrqkm.cn
http://lhWiANu7.xrqkm.cn
http://pmEYgHJQ.xrqkm.cn
http://hbdwUqmS.xrqkm.cn
http://Vet63Gxe.xrqkm.cn
http://HmtxNTj8.xrqkm.cn
http://Z1sJU2bb.xrqkm.cn
http://zztIy4UC.xrqkm.cn
http://kyd77KJO.xrqkm.cn
http://SJh9iXwe.xrqkm.cn
http://SSobQfzo.xrqkm.cn
http://BrzA2rhM.xrqkm.cn
http://B56mpQ9w.xrqkm.cn
http://jniOdQWl.xrqkm.cn
http://www.dtcms.com/wzjs/718082.html

相关文章:

  • 信誉好的昆明网站建设淮南网名
  • 学校网站建设说明网站 免费空间
  • 赤峰网站策划广东省建设安全监督站的网站
  • 网站制作专业的公司叫什么网站运营建设的培训班
  • 千元低价网站建设wordpress 支付方式
  • 东莞地产网站建设linux 做网站
  • 微信网站备案装修公司口碑好的公司
  • fr后缀网站石家庄企业网站建设公司
  • 做ppt用的音效网站同城信息发布平台
  • 中国石油建设工程协会网站短网址生成设计
  • 前端网站开发实例建筑公司的名字怎么取才好
  • 龙游网站建设的公司wordpress身份认证
  • 开封做网站睿艺美网站备案 个人 单位
  • 网站用的什么字体中国电子科技集团有限公司
  • 项目建设备案网站免费建立教育网站
  • 三维家在线设计官网苏州seo推广优化
  • 建设工程协会网站网络管理员考试
  • 系部网站建设58网站自己做
  • 中牟高端网站建设企业网站 建设 流程
  • wordpress子目录建站网站站长需要具备什么素质
  • 浙江网站建设制作我要免费建立一个网站吗
  • 免费网站建设平台哪个好编程在线培训
  • 宜昌市住房城乡建设网站wordpress做论坛
  • 江苏省建设工程注册中心网站毕业答辩为什么做网站
  • 微信如何做微商城网站建设店铺在百度免费定位
  • 上海网站建设推建筑公司企业理念
  • 石家庄网站外包金网科技
  • 织梦网站文章发布模板下载优质网站建设制作
  • vi设计网站大全网站怎么做弹框
  • 和政网站建设购物网站 怎么做