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

高效并发缓存

    博客分类:
  • java
阅读更多
package concurrent;

import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.FutureTask;

/**
 * 高效并发缓存
 * @author user
 *
 */
public class MemoryCacheTest {

	private final ConcurrentHashMap<String, Future<String>> cache = new ConcurrentHashMap<String, Future<String>>();
	
	public void query(String dataId) throws InterruptedException, ExecutionException{
		while(true){
			Future<String> future = cache.get(dataId);
			if(future == null){
				System.err.println("not have querying ........");
				Callable<String> call = new Callable<String>() {
					@Override
					public String call() throws Exception {
						System.err.println("非常耗时的操作!!!!!begin");
						Thread.sleep(5000);
						System.err.println("非常耗时的操作!!!!!end");
						return "大大的數據!";
					}
				};
				FutureTask<String> futureTask = new FutureTask<String>(call);
				if(null == cache.putIfAbsent(dataId, futureTask)){
					future = futureTask;
					futureTask.run();
				}
			}
			Thread.sleep(1000);
			System.err.println(future.get());
		}
	}
	
	/**
	 * @param args
	 * @throws ExecutionException 
	 * @throws InterruptedException 
	 */
	public static void main(String[] args) throws InterruptedException, ExecutionException {
		MemoryCacheTest test = new MemoryCacheTest();
		test.query("1");
	}

}
分享到:
评论

相关推荐

    高并发缓存器(基于ehcache)

    通过这些代码,我们可以构建一个高效的高并发缓存系统,使得频繁访问的数据能在内存中快速获取,降低数据库压力,提升整体系统性能。同时,通过合理的更新器设计,确保缓存数据的实时性和一致性,使缓存成为高并发...

    简单高效的php文件缓存类.zip

    - 数据的一致性:在多用户环境下,要防止并发写入同一缓存文件导致的数据冲突。 - 锁机制:可以使用文件锁(flock)来保证写入缓存时的互斥访问。 - 缓存更新策略:根据业务需求选择合适的缓存更新策略,如定时刷新...

    Go-BuildKit-并发缓存高效和与Dockerfile无关的构建器工具包

    它以其独特的并发缓存机制和与Dockerfile无关的特性,使得构建过程更加灵活和高效。下面我们将深入探讨这个工具包的关键知识点。 1. **并发缓存机制**: BuildKit引入了先进的缓存技术,能够显著减少构建时间。它...

    封装的高效缓存类,并模拟多个站点共享缓存

    在IT行业中,缓存是一种...总之,封装的高效缓存类和模拟多站点共享缓存是复杂但关键的IT任务,涉及到内存管理、并发控制、分布式系统等多个领域的知识。理解和掌握这些知识点对于构建高性能、高可用的应用至关重要。

    《高并发网站与分布式缓存Redis与开发实战》3.0.pdf

    5. 缓存技术的应用:缓存技术的使用对于提升网站性能至关重要,尤其是在高并发环境下。通过缓存常用数据,可以减少对后端数据库的读取次数,缩短响应时间,实现快速的数据访问。 6. NoSQL数据库:NoSQL数据库是非...

    公司用的缓存设计(源代码),基于JAVA的,可以接受10万并发

    通过深入学习和理解其源码,我们可以从中汲取经验,为自己的项目带来更高效、更稳定的缓存解决方案。而`akala`文件可能是源代码包,进一步的分析和学习将揭示更多关于这个缓存系统的设计和实现细节。

    VC并发用处理

    在《并发缓存程序.txt》中,可能包含了一个示例代码,演示如何使用上述概念和工具创建并发缓存处理程序。通过观察任务管理器中的内存变化,可以直观地理解并发处理如何影响系统的内存使用和性能。 总的来说,VC++...

    Go-一个简单高效用于go的LRU缓存包

    在Go语言中,有许多库可以帮助开发者实现LRU缓存,其中"Go-一个简单高效用于go的LRU缓存包"就是一个这样的工具。这个包为Go程序员提供了简单、高效的LRU缓存接口,便于在应用程序中管理和优化数据存储。 在Go语言中...

    hibernate事务,并发及缓存管理实例

    Hibernate是Java领域中一款广泛应用的对象关系...总结,理解并掌握Hibernate的事务、并发和缓存管理,对于开发高效、稳定的Java应用至关重要。通过实例深入学习,可以更好地运用这些概念,提升软件的性能和用户体验。

    NHibernate事务、并发和缓存 电子书

    在 NHibernate 中,事务管理和并发控制是确保数据完整性和一致性的关键机制,而缓存则有助于提高应用程序的性能。 7.1 事务与并发 事务是数据库操作的基本单位,它们确保了数据的一致性和完整性。ACID(原子性、...

    一种高并发分布式缓存服务架构.pdf

    "一种高并发分布式缓存服务架构" 本文讲述了如何设计一个高并发分布式缓存服务架构,解决传统单机缓存的缺陷,即当缓存数据量超过单机内存时将无法使用,当客户端的并发量超过一定压力时,对服务器的压力较大产生...

    Go-pike是HTTP缓存服务提供高效简单的HTTP缓存服务

    Go-pike是一个基于Go语言开发的HTTP缓存服务,它为用户提供了一种高效且简洁的解决方案,以替代传统的HTTP缓存工具如Varnish。Varnish以其出色的性能和强大的VCL(Varnish Configuration Language)配置而闻名,但在...

    高并发系统中缓存的利用和分析.pptx

    尽管本地缓存高效,但大量缓存可能导致垃圾回收(GC)压力增大,这时可以考虑使用堆外内存来存放缓存,比如通过 Unsafe 或 NIO 类进行操作。 其次,网络级缓存,如 Nginx,不仅可以作为反向代理服务器,还可以作为...

    hibernate一级缓存和二级缓存的区别与联系

    二级缓存中存储的是对象的集合数据,而不是单个对象实例,这样可以更高效地处理大量数据。二级缓存可以通过设置不同的并发访问策略来解决并发问题,如事务型、读写型或非严格读写型,以适应不同场景下的需求。 持久...

    Linux下使用C++编写的并发服务器,redis缓存和MySQL数据库,GoogleTest单元测试和webbench压力测试

    spark一个Linux下使用C++学习编写的并发服务器,使用redis作为缓存和MySQL作为数据库,并利用GoogleTest编写单元测试和webbench进行压力测试。.zipspark一个Linux下使用C++学习编写的并发服务器,使用redis作为缓存...

    laravel分布式并发锁

    4. Laravel Cache Locks:Laravel 5.3 引入了缓存锁,允许开发者使用缓存系统作为锁的存储。这在处理并发问题时提供了一个简单且灵活的解决方案。 5. Job Batching 和 Queues:对于长时间运行的任务,Laravel 的...

    AutoLoadCache是基于AOPAnnotation等技术实现的高效的缓存管理解决方案

    AutoLoadCache是一个强大的Java缓存管理工具,它利用AOP(面向切面编程)和注解技术来提供高效且灵活的缓存策略。在高并发的Web应用中,缓存管理是性能优化的关键部分,而AutoLoadCache正是为了解决这个问题而设计的...

    redis缓存处理并发操作,下载即可使用

    在这个应用中,可能包含了如何配置Redis连接、使用Redis缓存数据、实现并发控制(如使用Lua脚本、分布式锁)以及监控Redis性能等方面的内容。通过学习和实践这个示例,你可以更好地理解和掌握如何在实际项目中利用...

    buildkit:并发,高效缓存且与Dockerfile无关的构建器工具箱

    主要特点: 自动垃圾收集可扩展的前端格式并发依赖项解析高效的指令缓存构建缓存导入/导出嵌套的构建作业调用可分配工人多种输出格式可插拔架构没有root权限的执行阅读来自的提案入门博客文章 在上加入#buildkit...

    asp.net缓存 缓存

    3. 减轻数据库压力:大量并发请求可能导致数据库性能瓶颈,缓存可以帮助分担这部分压力。 然而,缓存并非总是万能的,它也有一些潜在的问题: 1. 数据一致性:缓存中的数据可能与数据库中的数据不同步,需要有合适...

Global site tag (gtag.js) - Google Analytics