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

深圳市企业网站seo写手接单平台

深圳市企业网站seo,写手接单平台,网站模板教程,宁波机械加工网Guava Cache 是 Google 的 Guava 库提供的一个高效内存缓存解决方案&#xff0c;适用于需要快速访问且不频繁变更的数据。 // 普通缓存 Cache<Key, Value> cache CacheBuilder.newBuilder().maximumSize(1000) // 最大条目数.expireAfterWrite(10, TimeUnit.MINUTES) /…

Guava Cache 是 Google 的 Guava 库提供的一个高效内存缓存解决方案,适用于需要快速访问且不频繁变更的数据。

// 普通缓存
Cache<Key, Value> cache = CacheBuilder.newBuilder().maximumSize(1000) // 最大条目数.expireAfterWrite(10, TimeUnit.MINUTES) // 写入后10分钟过期.recordStats() // 开启统计.build();// 自动加载缓存(LoadingCache)
LoadingCache<Key, Value> loadingCache = CacheBuilder.newBuilder().maximumWeight(10_000).weigher((Key k, Value v) -> v.size()) // 按值大小计算权重.build(new CacheLoader<Key, Value>() {@Overridepublic Value load(Key key) throws Exception {return loadDataFromDataSource(key); // 缺失时自动加载}});

2. 核心操作

// 手动放入缓存
cache.put(key, value);// 获取缓存(缺失时返回null)
Value value = cache.getIfPresent(key);// 获取并自动加载(LoadingCache)
Value value = loadingCache.get(key); // 若缺失,调用CacheLoader.load()// 手动移除
cache.invalidate(key);
cache.invalidateAll(); // 清空所有缓存

3. 过期策略

  • 时间驱动​:
    • expireAfterWrite(duration):写入后指定时间过期。
    • expireAfterAccess(duration):最后一次访问后指定时间过期。
  • 容量驱动​:
    • maximumSize(long):基于LRU策略淘汰条目。
    • maximumWeight(long) + weigher:按条目权重计算总容量。

4. 自动加载(LoadingCache)​

  • 同步加载​:通过 CacheLoader.load() 方法在缓存未命中时同步加载数据。
  • 批量加载​:重写 loadAll(Iterable<? extends K> keys) 提升多键加载效率。
  • 异步刷新​:使用 refreshAfterWrite(duration) 在后台异步刷新过期条目,避免阻塞读取。

5. 移除监听器(RemovalListener)​

监听缓存条目被移除的事件,执行资源释放等操作:

RemovalListener<Key, Value> listener = notification -> {if (notification.wasEvicted()) {// 处理资源释放}
};Cache<Key, Value> cache = CacheBuilder.newBuilder().removalListener(listener).build();

6. 统计信息

通过 recordStats() 启用统计,获取命中率、加载时间等数据:

Cache<?, ?> cache = CacheBuilder.newBuilder().recordStats().build();
// ...
CacheStats stats = cache.stats();
double hitRate = stats.hitRate(); // 命中率
long missCount = stats.missCount(); // 未命中次数

7. 线程安全

Guava Cache 默认线程安全,支持高并发读写,无需额外同步。


8. 异常处理

  • CacheLoader 中抛出的异常会被封装为 UncheckedExecutionException
  • 建议在 load 方法中捕获异常,或通过 getUnchecked() 处理。

9. 使用场景

  • 高频读取,低频变更​:如配置信息、用户会话。
  • 计算密集型数据​:避免重复计算(如复杂查询结果)。
  • 资源敏感场景​:通过权重控制内存占用。

示例代码

LoadingCache<String, String> cache = CacheBuilder.newBuilder().maximumSize(1000).expireAfterAccess(5, TimeUnit.MINUTES).recordStats().build(new CacheLoader<String, String>() {@Overridepublic String load(String key) {return fetchDataFromDB(key); // 缺失时从数据库加载}});// 使用缓存
try {String data = cache.get("user:123");
} catch (ExecutionException e) {// 处理加载异常
}// 手动刷新
cache.refresh("user:123");

通过合理配置策略,Guava Cache 能有效平衡内存使用与性能,是 Java 应用中轻量级缓存的优选方案。

http://www.dtcms.com/wzjs/451625.html

相关文章:

  • 做兼职什么网站产品推广朋友圈文案
  • 网站建设 技术方案公司官网制作多少钱
  • 网站标题前的小图标怎么做开封网站优化公司
  • 政府网站建设工作方案首页关键词优化公司
  • dede做的网站弹广告销售成功案例分享
  • 佛山网站开发公司b站引流推广
  • 做购物网站需要什么国内新闻最新消息今天简短
  • 邪恶做动态网站廊坊seo整站优化软件
  • 嘉兴网站托管郑州网站seo外包公司
  • 如何制作免费网站今日疫情最新消息全国31个省
  • 一流的常州网站建设上海网站建设关键词排名
  • iis部署网站 http 500 - 内部服务器错误杭州百度推广优化排名
  • 山西省住房建设厅网站房屋建筑定额今天刚刚的最新新闻
  • 网站开发一定要学java吗学管理培训班去哪里学
  • 网站建设顾问做网站怎么做
  • 微信网站建设平台电商网站公司
  • 注册网站域名的入口是上海最新新闻热点事件
  • 官方网站建设平台微信软文是什么
  • 如何做网站内容构架图淘宝直通车推广怎么做
  • 学做家常菜的网站最新热点新闻事件素材
  • wordpress资讯站黄页推广平台有哪些
  • 郑州网站建设廴汉狮网络网络营销八大职能
  • 网站建设投标评分标准google网址直接打开
  • 网站建设 www.y1web.com中国企业网官方网站
  • 百度上做网站模板兰州网站seo服务
  • 住宿和餐饮网站建设的推广成都seo优化排名推广
  • 微山县建设.局网站今日国际新闻头条15条简短
  • 快捷做网站app推广活动策划方案
  • 有哪些公司做网站广州seo外包多少钱
  • wordpress 空格 插件百度seo高级优化