是Guava Cache提供的一个方法,用于从缓存中获取与指定键相关联的值(如果存在)。这个方法不会触发缓存加载机制,也就是说,如果缓存中不存在该键对应的值,它不会尝试通过其他方式(如加载新值)来填充缓存。 2. getIfPresent方法的基本使用示例 下面是一个简单的示例,展示了如何使用getIfPresent方法从Guava Cache中获取...
假如只是简单的把Guava Cache当作HashMap或ConcurrentHashMap的替代品,不需要用到load方法,而是手动地插入,可以这样: com.google.common.cache.Cache<String,String>cache=CacheBuilder.newBuilder().expireAfterWrite(10,TimeUnit.MINUTES).build(); 注意不能用LoadingCache了。 查找: cache.getIfPresent("xx"); 插入:...
1.Guava Cache的get/getIfPresent方法当参数为null时会抛空指针异常 我刚开始使用时还以为Guava Cache跟HashMap一样,get(null)返回null。 实际上Guava整体设计思想就是拒绝null的,很多地方都会执行com.google.common.base.Preconditions.checkNotNull的检查。 2.Guava Cache的load方法不能返回null,否则抛异常 Guava Cac...
System.out.println("写入 key:1 ,value:" + cache.getIfPresent(1)); Thread.sleep(10000); cache.put(2, "b"); System.out.println("写入 key:2 ,value:" + cache.getIfPresent(2)); Thread.sleep(10000); System.out.println(sdf.format(new Date()) + " sleep 10s , key:1 ,value:" + ...
本文我们先介绍一些缓存的背景知识,以及内存缓存的流行开源库类实现,最后利用一些例子重点介绍下 Guava Cache 的缓存功能。 背景 什么是缓存 “ 在计算中,缓存是一个高速数据存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求该数据时,速度要比访问数据的主存储位置快。通过缓存,可以高效地重用之前检索...
// 新建CacheBuilder Cache<Integer, String> cache = CacheBuilder.newBuilder().build(); cache.put(1, "a"); cache.put(2, "b"); System.out.println(cache.getIfPresent(1)); // 输出: a System.out.println(cache.getIfPresent(3)); // 输出: null System.out.println(cache.getAllPresent(new...
Cache<String, String> cache = CacheBuilder.newBuilder() //最大缓存大小 .maximumSize(100) //写入后的过期时间 .expireAfterWrite(10, TimeUnit.MINUTES) .build(); cache.put("name", "zhangsan"); String cacheValue = cache.getIfPresent("name"); ...
build(); cache.put("key1","value1"); cache.put("key2","value2"); cache.put("key3","value3"); System.out.println("第一个值:" + cache.getIfPresent("key1")); System.out.println("第二个值:" + cache.getIfPresent("key2")); System.out.println("第三个值:" + cache.get...
User user;try{user=cache.get(id,()->{LOGGER.info("缓存不存在,从loader加载数据");return userDao.get(id);});}catch(ExecutionException e){throw new RuntimeException(e);}return user;}@Override public User saveOrUpdateUser(User user){userDao.saveOrUpdate(user);cache.put(user.getId(),user...
Cache<Long, String> cache =CacheBuilder.newBuilder() .maximumSize(1000) .build();try{ String s= cache.get(1L,newCallable<String>() { @OverridepublicString call()throwsException {//TODO: 根据业务加载数据returnRandomStringUtils.randomAlphanumeric(10); ...