Strato NCache非阻塞式缓存框架
缓存是服务器程序中经常用到的技术,使用缓存可以大大降低服务器的压力。目前常见的缓存工具都很好地解决了生命周期、存储、命中率等关键算法,但是绝大多数的缓存框架对于数据更新都是阻塞式的,即当缓存过期时会等待应用程序重新获取值。其性能曲线类似下图(假设刷新一次需要5ms):
阻塞式的缓存处理方式,每次的重新取值都会出现一次波峰,用户在使用系统的过程中将产生顿挫感。
NCache 建立了一套抽象的非阻塞式缓存模型与 API,应用 NCache 的缓存处理时效如下图所示:
使用 NCache 仅需在首次加载数据时停顿,此后的更新都将在后台线程完成。
NCache特性一览:
-
仅首次加载时阻塞,此后刷新都由后台完成
-
开发者可自定义线程池,控制线程调度及溢出机制
-
默认提供基于 FIFO 的内存存储,对象超出将被移除
-
支持链式数据存储,开发者可附加其他存储方式,如 Redis、Memcached、Ehcache
快速上手:
NCache 使用非常简单,只需将 jar 包放入classpath,然后即可调用。下面是一个简单的示例:
int cacheTTL=5*1000;//缓存有效期5秒钟 NCache<String> ncache=NCache.newInstance();//ncache可复用 ncache.setTimeToLive(cacheTTL); DataLoader<String> loader=new DataLoader<String>() {//loader可复用 @Override public String load() throws Exception { int expense=new Random().nextInt(2000);//随机模拟取数据性能消耗 String value="VALUE_"+expense; System.err.println("Reloading:"+value); Thread.sleep(expense); return value; } }; for(int i=0;i<10000;i++){ String value=ncache.get("somekey", loader); System.out.println("Get:"+value); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } }
源码:https://svn.zim-soft.com/svn/strato/tags/ncache/strato.ncache.v2_6_5 (用户名:guest 密码:无)
评论
Web.Java非阻塞式服务器
Web.Java是一个高性能,轻量级的非阻塞式服务器。为了能更好的提高性能,Web.Java把HTTP服务区分应用和文件服务两种。Web.Java整体采用Reactor模式用来接收或响应HTTP请求(
Web.Java非阻塞式服务器
0
AmpPHP 非阻塞并发框架
Amp是一个PHP非阻塞并发框架,它提供了一个事件循环,promise 和stream作为异步编程的基础。与生成器结合使用的promise用于构建协程,它允许像同步代码一样编写异步代码,而不需要任何回
AmpPHP 非阻塞并发框架
0
swPromisePHP纯异步非阻塞框架
swPromise,基于swoole的PHPpromise框架一个业务请求可能会串行的请求多个接口A->B->C,此时如果接口B的响应时间较慢(关键性业务,需要有预先准备好的超时等待时间)
swPromisePHP纯异步非阻塞框架
0
ResponseDetective非侵入式框架
ResponseDetective是一个非侵入式框架,用于拦截你的应用程序和服务器之间的传出请求和传入的反应,可用于调试。使用:Step1:Registerinterceptors// request
ResponseDetective非侵入式框架
0