Util应用框架基础(七)- 本地缓存

本地缓存

Util应用框架本地缓存操作

本节介绍Util应用框架如何配置本地缓存.

概述

本地缓存将数据对象存储到Web服务器进程的内存中,不需要序列化对象,性能极高.

但能使用的内存容量有限,并且在多服务器环境更新和同步非常困难.

本地缓存可在单体项目使用,或者用于需要高性能,但很少变化的数据,且多个缓存副本不一致时不会给应用带来影响的场景.

EasyCaching 还支持2级缓存,可以将本地缓存和Redis缓存搭配使用,可自动同步本地缓存的多个副本.

配置本地缓存

  • 引用Nuget包

    Nuget包名: Util.Caching.EasyCaching

  • AddMemoryCache

    使用 AddMemoryCache 扩展方法启用本地缓存.

    • 默认配置不带参数,设置以下默认值:

      • MaxRdSecond 设置为 1200秒.

      • CacheNulls 设置为 true.

      var builder = WebApplication.CreateBuilder( args );
      builder.AsBuild().AddMemoryCache();
      
    • 使用 IConfiguration 进行配置.

      可以使用 appsettings.json 文件进行配置.

      var builder = WebApplication.CreateBuilder( args );
      builder.AsBuild().AddMemoryCache( builder.Configuration );
      

      默认配置节: EasyCaching:Memory

      appsettings.json 配置文件示例.

      {
        "EasyCaching": {
          "Memory": {
            "MaxRdSecond": 1200,
            "CacheNulls": true
          }
        }
      }
      
    • 使用委托进行配置.

      var builder = WebApplication.CreateBuilder( args );
      builder.AsBuild().AddMemoryCache( options => {
          options.MaxRdSecond = 1200;
          options.CacheNulls = true;
      } );
      
  • 配置参数

    EasyCaching 本地缓存提供了多个配置参数,具体请参考 EasyCaching 文档.

Util应用框架交流群: 24791014

### Java本地缓存框架概述 对于Java开发者而言,在处理应用性能优化时,合理利用本地缓存技术能够显著提升系统的响应速度和吞吐量。当前主流的几种Java本地缓存框架各有特色,适用于不同场景下的需求。 #### 1. 使用`ConcurrentHashMap`构建简易缓存机制 通过引入`java.util.concurrent.ConcurrentHashMap`类,可以快速搭建起一个具备基本并发访问能力的内存级缓存结构[^2]。此方法适合于那些对缓存管理要求不高、仅需简单的键值对存储的应用场合。然而,这种方式缺乏高级特性如自动清理过期条目等功能。 ```java import java.util.concurrent.ConcurrentHashMap; import java.util.Map; public class SimpleCache { private final Map<String, String> cache = new ConcurrentHashMap<>(); public String get(String key) { return cache.get(key); } public void put(String key, String value) { cache.put(key, value); } } ``` #### 2. Guava Cache 提供丰富的API接口 Google开源项目Guava所提供的缓存组件不仅继承了`ConcurrentHashMap`的优点,还增加了更多实用的功能,比如设置最大容量、定义加载器以及指定移除监听器等[^3]。这使得它成为许多中小型项目的首选方案之一。 ```java import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; public class GuavaCacheExample { LoadingCache<String, String> cache = CacheBuilder.newBuilder() .maximumSize(100) .expireAfterWrite(10, TimeUnit.MINUTES) .build(new CacheLoader<String, String>() { @Override public String load(String key) throws Exception { // Simulate data fetching from a remote source. return "value_for_" + key; } }); public String getValue(String key) throws ExecutionException { return cache.get(key); } } ``` #### 3. Caffeine - 高效且易用的选择 作为新一代的高性能缓存库,Caffeine凭借其接近理论极限的时间复杂度表现赢得了广泛好评[^4]。相较于其他同类产品,Caffeine拥有更好的默认参数配置,并且提供了更为直观简洁的操作界面,非常适合追求极致效率的同时又不想牺牲太多开发便利性的团队使用。 ```java import com.github.benmanes.caffeine.cache.Caffeine; import com.github.benmanes.caffeine.cache.Cache; import java.util.concurrent.TimeUnit; public class CaffeineCacheDemo { Cache<String, String> caffeineCache = Caffeine.newBuilder() .expireAfterAccess(5, TimeUnit.MINUTES) .maximumSize(10_000) .build(); public void setKeyValue(String key, String value){ caffeineCache.put(key,value); } public String getKey(String key){ return caffeineCache.getIfPresent(key); } } ``` 综上所述,当面临具体应用场景时,可以根据实际业务逻辑特点来挑选最适合自己的本地缓存工具;如果只是单纯为了提高读取速率而不需要复杂的控制,则可以选择基于`ConcurrentHashMap`的手动实现;而对于需要更加精细管理和维护的情况来说,Guava Cache 或者 Caffeine 将会是比较理想的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值