java本地緩存怎么設(shè)置過(guò)期時(shí)間

小億
531
2024-02-29 13:53:29

在Java中,可以通過(guò)使用`CacheBuilder`類(lèi)來(lái)創(chuàng)建本地緩存并設(shè)置過(guò)期時(shí)間。以下是一個(gè)示例代碼:

```java

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) {

// 創(chuàng)建一個(gè)本地緩存,設(shè)置最大緩存大小為100,過(guò)期時(shí)間為10分鐘

Cache cache = CacheBuilder.newBuilder()

.maximumSize(100)

.expireAfterWrite(10, TimeUnit.MINUTES)

.build();

// 將鍵值對(duì)放入緩存中

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分鐘,此時(shí)緩存中的數(shù)據(jù)應(yīng)該已經(jīng)過(guò)期

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()`來(lái)創(chuàng)建一個(gè)緩存構(gòu)建器,然后通過(guò)調(diào)用`maximumSize()`方法設(shè)置緩存的最大大小,`expireAfterWrite()`方法設(shè)置緩存數(shù)據(jù)的過(guò)期時(shí)間。最后通過(guò)調(diào)用`build()`方法來(lái)構(gòu)建緩存對(duì)象。

需要注意的是,以上示例中使用了Guava庫(kù)中的`CacheBuilder`來(lái)創(chuàng)建本地緩存,需要在項(xiàng)目中引入相應(yīng)的依賴(lài)。

0