Java如何设置过期时间的map

1.可设置Map中的Entry在一段时间后自动过期。

2.可设置Map最大容纳值,当到达Maximum size后,再次插入值会导致Map中的第一个值过期。

3.可添加监听事件,在监听到Entry过期时调度监听函数。

4.可以设置懒加载,在调用get()方法时创建对象。

 

       <dependency>
            <groupId>net.jodah</groupId>
            <artifactId>expiringmap</artifactId>
            <version>0.5.8</version>
        </dependency>
 public static void testExpiringMap() throws InterruptedException {
        ExpiringMap<String,String> map = ExpiringMap.builder()
                .maxSize(100)
                .expiration(1, TimeUnit.SECONDS)
                .expirationPolicy(ExpirationPolicy.ACCESSED)
                .variableExpiration()
                .build();
        ExpiringMap<String,String> map1 =ExpiringMap.builder().maxSize(1000).build();
                map.put("test","test123");
        Thread.sleep(500);
        String test= map.get("test");
        Thread.sleep(200);
     Long   expiration = map.getExpiration("test");
        Long   expectedExpiration = map.getExpectedExpiration("test");
        System.out.println(test);
        System.out.println(expiration);
        System.out.println(expectedExpiration);
    }

这种方案只能适用于单一的服务部署,不适合集群项目,有需要可以引入redis,使用key的时间过期功能

posted @ 2023-02-20 14:16  黄橙  阅读(597)  评论(0)    收藏  举报