Javaローカルキャッシュ:有効期限設定の実装と注意点
Javaで、CacheBuilderクラスを使用してローカルキャッシュを作成し、有効期限を設定することができます。以下はサンプルコードです。
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import java.util.concurrent.TimeUnit;
public class LocalCacheExample {
public static void main(String[] args) {
// 创建一个本地缓存,设置最大缓存大小为100,过期时间为10分钟
Cache<String, String> cache = CacheBuilder.newBuilder()
.maximumSize(100)
.expireAfterWrite(10, TimeUnit.MINUTES)
.build();
// 将键值对放入缓存中
cache.put("key1", "value1");
cache.put("key2", "value2");
// 从缓存中获取值
String value1 = cache.getIfPresent("key1");
String value2 = cache.getIfPresent("key2");
System.out.println("value1: " + value1);
System.out.println("value2: " + value2);
// 休眠11分钟,此时缓存中的数据应该已经过期
try {
Thread.sleep(11 * 60 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 再次尝试获取缓存中的值
value1 = cache.getIfPresent("key1");
value2 = cache.getIfPresent("key2");
System.out.println("value1 after expiration: " + value1);
System.out.println("value2 after expiration: " + value2);
}
}
上記のコードでは、CacheBuilder.newBuilder()を使用してキャッシュビルダーを作成し、maximumSize()メソッドを呼び出してキャッシュの最大サイズを設定し、expireAfterWrite()メソッドを呼び出してキャッシュデータの有効期限を設定します。最後にbuild()メソッドを呼び出してキャッシュオブジェクトを構築します。
上記の例では、GuavaライブラリのCacheBuilderを使用してローカルキャッシュを作成していますが、そのためにはプロジェクトに適切な依存関係を追加する必要があります。