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

域名到期了网站会打不开吗oa软件是做什么的

域名到期了网站会打不开吗,oa软件是做什么的,金融做市场广告挂哪些网站,手机系统优化1. Caffeine 简介 Caffeine 是一个基于 Java 8 的高性能本地缓存库,由 Ben Manes 开发,旨在替代 Google Guava Cache,提供更优的缓存策略、更高的吞吐量和更灵活的配置。 核心优势 ✅ 卓越的性能:采用优化的数据结构&#xff0…

1. Caffeine 简介

Caffeine 是一个基于 Java 8 的高性能本地缓存库,由 Ben Manes 开发,旨在替代 Google Guava Cache,提供更优的缓存策略、更高的吞吐量和更灵活的配置。

核心优势

卓越的性能:采用优化的数据结构(如 Window TinyLFU 淘汰算法),减少锁竞争,提升并发访问效率。
灵活的缓存策略:支持基于大小、时间、权重等多种淘汰机制。
丰富的功能:自动刷新、异步加载、批量操作等高级特性。
无缝集成 Spring:与 Spring Cache 完美结合,轻松替换 Redis 或 Ehcache。


2. Caffeine 核心机制

2.1 缓存淘汰策略

Caffeine 提供多种缓存淘汰策略,防止内存无限增长:

策略方法说明
基于大小maximumSize(long)限制缓存最大条目数
基于权重maximumWeight(long) + weigher()根据条目权重限制缓存
基于时间expireAfterWrite / expireAfterAccess写入/访问后过期
手动淘汰invalidate(key) / invalidateAll()主动移除缓存

2.2 缓存加载方式

Caffeine 支持 同步加载异步加载

// 同步加载(阻塞)
LoadingCache<Key, Value> cache = Caffeine.newBuilder().build(key -> fetchFromDB(key));// 异步加载(非阻塞)
AsyncLoadingCache<Key, Value> asyncCache = Caffeine.newBuilder().buildAsync((key, executor) -> CompletableFuture.supplyAsync(() -> fetchFromDB(key), executor));

2.3 自动刷新机制

refreshAfterWrite 允许缓存条目在写入后一段时间自动刷新(异步,不阻塞请求):

LoadingCache<String, Data> cache = Caffeine.newBuilder().refreshAfterWrite(1, TimeUnit.MINUTES) // 1分钟后访问时触发刷新.build(this::loadDataFromDB);

注意:刷新时返回旧值,后台异步加载新值,适合高并发场景。


3. 代码实战:Caffeine + Spring Boot

3.1 基础配置

@Configuration
@EnableCaching
public class CacheConfig {@Beanpublic Caffeine<Object, Object> caffeineConfig() {return Caffeine.newBuilder().maximumSize(1000)          // 最大1000条.expireAfterWrite(10, TimeUnit.MINUTES) // 10分钟过期.refreshAfterWrite(1, TimeUnit.MINUTES); // 1分钟后自动刷新}@Beanpublic CacheManager cacheManager(Caffeine<Object, Object> caffeine) {CaffeineCacheManager cacheManager = new CaffeineCacheManager();cacheManager.setCaffeine(caffeine);return cacheManager;}
}

3.2 业务层使用

@Service
public class UserService {@Cacheable(value = "users", key = "#id") // 缓存名称为 "users"public User getUserById(Long id) {return userRepository.findById(id).orElse(null);}@CacheEvict(value = "users", key = "#id") // 删除缓存public void deleteUser(Long id) {userRepository.deleteById(id);}
}

4. 高级用法

4.1 多级缓存(Caffeine + Redis)

@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory,Caffeine<Object, Object> caffeine
) {// 本地缓存CaffeineCacheManager caffeineCacheManager = new CaffeineCacheManager();caffeineCacheManager.setCaffeine(caffeine);// Redis 缓存RedisCacheManager redisCacheManager = RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(RedisCacheConfiguration.defaultCacheConfig()).build();// 组合缓存(先查本地,再查Redis)return new CompositeCacheManager(caffeineCacheManager, redisCacheManager);
}

4.2 批量操作优化

public Map<Long, User> batchGetUsers(List<Long> userIds) {// 批量查询缓存Map<Long, User> cachedUsers = cache.getAll(userIds);// 查找未命中的IDList<Long> missingIds = userIds.stream().filter(id -> !cachedUsers.containsKey(id)).collect(Collectors.toList());if (!missingIds.isEmpty()) {// 从DB加载并更新缓存Map<Long, User> dbUsers = userRepository.batchFindByIds(missingIds);cache.putAll(dbUsers);cachedUsers.putAll(dbUsers);}return cachedUsers;
}

5. 注意事项 & 最佳实践

5.1 缓存穿透问题

问题:恶意请求不存在的 key,导致频繁查询数据库。
解决方案

.build(key -> {User user = fetchFromDB(key);if (user == null) {return new NullValue(); // 缓存空对象}return user;
});

5.2 缓存雪崩

问题:大量缓存同时失效,导致数据库压力激增。
解决方案

.expireAfterWrite(10 + ThreadLocalRandom.current().nextInt(5), TimeUnit.MINUTES) // 随机过期时间

5.3 内存监控

Caffeine 提供统计信息:

.recordStats() // 启用统计
CacheStats stats = cache.stats();
System.out.println("命中率: " + stats.hitRate());
System.out.println("加载次数: " + stats.loadCount());

5.4 最佳实践

合理设置缓存大小:避免 OOM(如 maximumSize(10000))。
结合 TTL + 自动刷新:保证数据新鲜,同时避免阻塞请求。
分布式环境使用多级缓存:本地缓存 + Redis,减少网络开销。
监控缓存命中率:优化缓存策略,避免缓存失效风暴。


6. 总结

Caffeine 是 Java 生态中最强大的本地缓存库之一,适用于:

  • 高频访问的只读数据(如配置、用户信息)
  • 高并发场景(如电商商品详情页)
  • 计算成本高的操作(如复杂查询、API 调用)

通过合理的配置(refreshAfterWrite + expireAfterWrite)和最佳实践(防穿透、防雪崩),可以极大提升系统性能。

推荐组合

  • 单机应用:纯 Caffeine
  • 分布式系统:Caffeine + Redis(多级缓存)

附录:官方资源

  • GitHub: Caffeine
  • Spring Cache + Caffeine

希望这篇深度解析能帮助你掌握 Caffeine 的核心机制和最佳实践! 🚀


文章转载自:

http://QdRewLCV.mrncd.cn
http://WH5afEU8.mrncd.cn
http://CcdXfX6z.mrncd.cn
http://OxK1zXkL.mrncd.cn
http://P7thpDW8.mrncd.cn
http://cTCPpaFp.mrncd.cn
http://0gCU7IFK.mrncd.cn
http://l9LwsDHy.mrncd.cn
http://WfhNBV5T.mrncd.cn
http://0JleG6Ww.mrncd.cn
http://rvXRpNDP.mrncd.cn
http://L9goi9xa.mrncd.cn
http://fhv97l9n.mrncd.cn
http://K5reLrss.mrncd.cn
http://CBVr2Eij.mrncd.cn
http://NEn7UVVx.mrncd.cn
http://8YMWJz1F.mrncd.cn
http://4drUlZrr.mrncd.cn
http://nsOLWqfX.mrncd.cn
http://3kGAX5Oj.mrncd.cn
http://BipaQ8DO.mrncd.cn
http://3i6dbFir.mrncd.cn
http://gvLRYNE5.mrncd.cn
http://nErZFhX6.mrncd.cn
http://27gCTiOp.mrncd.cn
http://4SN5LBF9.mrncd.cn
http://o7L0os2E.mrncd.cn
http://CpqK8S20.mrncd.cn
http://hm4FTEoL.mrncd.cn
http://VvYlwRWW.mrncd.cn
http://www.dtcms.com/wzjs/640333.html

相关文章:

  • 成都网站建设138wordpress启用静态
  • 网站建设公司华网天动画制作网页
  • 江门营销型网站建设多少钱海口网络公司
  • 网站项目怎么做医学关键词 是哪个网站做
  • 网站建设一般需要多久动漫制作专业费钱吗
  • 做网站原型的简单工具用于网站开发的语言
  • 上海城乡建设网站wordpress gallery
  • 在家建设一个网站需要什么材料电子商务网站建设理论依据
  • 设计一个个人求职网站用手机看网站源代码
  • 360怎么变成建设银行首选网站深圳注册公司代理机构
  • flash 好的网站网站建设和维护一年的费用
  • html5浅蓝色网站设计公司dede模板网络软文营销
  • 熵网站页面好看的教育类网站模板下载
  • 清河做网站哪家好高质量网站外链平台
  • mysql做镜像网站北京短视频代运营
  • 网站布局模板百度爱采购推广一个月多少钱
  • 关键词设定在网站上个人域名备案需要多久
  • 推广型网站建设模板wordpress 自定义数据库
  • pc网站和移动网站网络营销渠道有哪三类
  • 怎样制作一个个人网站手机网址大全哪个好
  • 网站目录怎么做商派商城网站建设方案
  • 郑州专业的网站建设公司哪家好做视频网站注意事项
  • 曲阜市建设局网站订阅号做微网站
  • 做跨境电商在什么网站选品网站建设技术难点
  • 网站制作教程 pdf下载做网站的时候怎么设置背景
  • 连江厦门网站建设公司破解网站后台账号密码
  • iapp网站做软件教程哈尔滨做网站公司
  • 阿里巴巴做网站需要多少钱wordpress相册编辑插件下载
  • 做网页设计卖钱的网站网站用视频做背景
  • 在万网上域名了怎么做网站ui设计培训班的学费一般是多少钱?