`
m635674608
  • 浏览: 5063153 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

GuavaCache 缓存测试

    博客分类:
  • java
 
阅读更多
import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;

import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.RemovalListener;
import com.google.common.cache.RemovalNotification;

public class GuavaCacheBuilderTest {
	
	static  Cache<String, String> loadingCache = CacheBuilder.newBuilder()       
	            .maximumSize(20)//设置大小,条目数        
	            .expireAfterWrite(20, TimeUnit.SECONDS)//设置失效时间,创建时间      
	            .expireAfterAccess(20, TimeUnit.HOURS) //设置时效时间,最后一次被访问       
	            .removalListener(new RemovalListener<String, String>() { //移除缓存的监听器
	                public void onRemoval(RemovalNotification<String, String> notification) {
	                    System.out.println("有缓存数据被移除了");
	                }})
	            .build(new CacheLoader<String, String>(){ //通过回调加载缓存
	                @Override
	                public String load(String name) throws Exception {
	                	System.out.println("第一次加載緩存》》》》》》》》》》》");
	                    return name + "-" + "iamzhongyong";
	                }
	        });
	
    public static void main(String[] args) throws Exception{
        final GuavaCacheBuilderTest cache = new GuavaCacheBuilderTest();
        
        for(int i=0;i<10;i++){
        	new Thread(new Runnable() {
				@Override
				public void run() {
					// TODO Auto-generated method stub
					 try {
						cache.getNameLoadingCache("bixiao");
						loadingCache.invalidate("bixiao");
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			}).start();;
        }
       
    }
    public void getNameLoadingCache(String name) throws Exception{
       // System.out.println(cache.get(name));
        //cache.invalidateAll();
        
    	
       String rs =  loadingCache.get(name, new Callable<String>() {

			@Override
			public String call() throws Exception {
				// TODO Auto-generated method stub
				System.out.println("自定義第一次觸發");
				return "1234";
			}
		});
       
       //System.out.println(rs);
    }
}

 

分享到:
评论

相关推荐

    spring-boot-redis-guava-caffeine-cache:springboot 使用 redis guava caffeine 缓存示例

    本项目"spring-boot-redis-guava-caffeine-cache"主要探讨了如何在Spring Boot应用中集成Redis、Guava和Caffeine三种不同的缓存策略。 首先,Redis是一款开源的内存数据结构存储系统,常被用作数据库、缓存和消息...

    第六讲-缓存接入之多级缓存实现及分布式部署落地实践.pdf

    这里提到了多级缓存的概念,通常包括堆内缓存(如Guava Cache)和分布式缓存(如Redis)。在代码示例中,我们看到一个典型的多级缓存访问流程:首先尝试从JVM堆缓存中获取数据,若未命中,则查询分布式缓存,最后再...

    scala-partest_2.11.0-M4-1.0-RC1.zip

    总结起来,这个压缩包包含了一个针对Scala Partest的特定版本和一个对Guava Cache的重要扩展,两者都是软件开发中的实用工具,分别提升了Scala测试的效率和Java缓存的弹性。通过深入研究和利用这些资源,开发者可以...

    java缓存数据

    - **Guava Cache**:Google提供的Guava库包含了强大的缓存功能。通过`LoadingCache`接口,我们可以自定义缓存加载逻辑,例如使用`CacheLoader`加载数据到缓存。源码中,`get`方法会检查缓存中是否存在指定键,若不...

    开源项目-goburrow-cache.zip

    开源项目-goburrow-cache.zip 是一个基于Go语言实现的本地缓存库,它受到了Google的Guava Cache的启发,旨在为Go开发者提供类似于Guava Cache的功能。Guava Cache是Java开发中的一个流行缓存解决方案,而goburrow-...

    JAVAWEB缓存技术

    6. **其他缓存技术**:除了OSCache和JCS,JAVAWeb还有其他缓存技术,如Hibernate的二级缓存、 Ehcache、Guava Cache等,它们各有特点,适应不同的场景。 总的来说,JAVAWeb缓存技术的选型和使用是一项复杂而重要的...

    google guava

    Guava的Cache模块是其一大亮点,它提供了一种强大的本地缓存解决方案。开发者可以通过自定义加载函数、过期策略、大小限制等方式来管理缓存。缓存的使用可以显著提高应用程序的性能,减少对远程服务或数据库的访问...

    微服务高级测试(sentinel+seata+多级缓存+mq)资料.rar

    多级缓存通常包括本地缓存(如Guava Cache)、远程分布式缓存以及二级缓存等层次。通过合理设置缓存策略,可以显著降低对数据库的访问压力。在微服务中,你需要掌握缓存的生命周期管理、缓存穿透、缓存击穿和缓存...

    springboot集成spring cache缓存示例代码

    "SpringBoot集成Spring Cache缓存示例代码" SpringBoot框架提供了强大的缓存机制,通过集成Spring Cache,可以大大提高应用程序的性能。在本文中,我们将介绍如何在SpringBoot中使用Spring Cache缓存。 ...

    spring小结之配置二级缓存!

    Spring支持多种缓存框架,如 EhCache、Hibernate 的二缓、Guava Cache等。在这里,我们将以EhCache为例,介绍如何在Spring中配置二级缓存。 1. 引入依赖:在项目中,我们需要添加EhCache的依赖,通常是在`pom.xml`...

    java缓存代码,tomcat JVM配置

    常用的Java缓存框架有Ehcache、Guava Cache和Spring Cache等。例如,在`java写缓存.docx`文件中,可能详细讲解了如何利用这些库创建缓存策略,包括设置缓存大小、过期策略、并发控制等。在自定义缓存实现时,需要...

    Java编程代码-多级缓存-源代码+讲义+资料

    1. **本地缓存**:使用Java集合类如HashMap或者特定库如Guava Cache来实现的本地内存缓存,用于快速访问最近使用过的数据。 2. **分布式缓存**:通过连接远程缓存服务(如Redis、Memcached),实现跨节点的数据共享...

    java之反射优化(缓存思路)源码

    3. **Guava库的`LoadingCache`**:Google的Guava库提供了强大的缓存功能,可以自动处理缓存过期和清理。 ```java import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; ...

    基于Java的实例源码-Java缓存工具 SimpleCache.zip

    此外,这也能帮助开发者扩展知识,比如了解如何将这种简单的缓存机制与更复杂的缓存系统,如Ehcache、Guava Cache或Spring Framework的Cache抽象相结合,以适应更大型的分布式系统需求。 总的来说,"基于Java的实例...

    《项目可用》CacheUtil缓存工具类.rar

    在Java中,缓存可以是内存中的数据结构,如HashMap,也可以是专门的缓存库,如 Ehcache、Guava Cache 或 Redis。 2. **CacheUtil 类**:这个工具类很可能是为了简化缓存操作而设计的,它封装了缓存的增删改查等基本...

    cache-demo-2.5.zip_Cache2.5_DEMO_cache

    9. Java缓存API:如Guava Cache、Spring Cache等的使用方法。 10. 测试:如何编写测试用例来验证缓存功能的正确性和效率。 通过研究这个"cache-demo-2.5.zip",开发者可以深入了解阿里巴巴系统中的缓存管理实践,并...

    guava-tests-17.0.zip

    - **缓存测试**:Guava的Cache模块有全面的测试,确保缓存的实现和行为符合预期。 - **函数式编程**:测试了函数式接口、 Predicates、Functions等,以支持Java 8的Lambda表达式。 2. **FileCache**: - **缓存...

    Guava Source Code 22.0

    Guava的Cache提供了内存管理和数据缓存的解决方案,支持过期策略、最大容量限制等功能。此外,Guava的Persister接口允许开发者自定义数据持久化策略,方便在内存和持久存储间切换。 总结起来,Guava 22.0是一个功能...

    Java Cache 模拟器

    在Java中,我们可以使用各种库来实现缓存机制,如Guava Cache、Spring Cache等。本项目可能是一个用Java编写的自定义缓存模拟器,用于教育目的或进行性能分析。 首先,我们需要了解缓存的基本概念,包括缓存命中率...

    mat工具测试类

    4. **缓存策略**:测试缓存系统(如Guava Cache、Ehcache)的配置,确保过期数据能够被及时移除。 总的来说,MAT工具在测试类中的运用是排查和优化Web应用内存性能的关键步骤。通过编写测试用例模拟实际问题,结合...

Global site tag (gtag.js) - Google Analytics