非阻塞式缓存框架 Strato NCache

Apache
Java
跨平台
2016-08-17
strato

缓存是服务器程序中经常用到的技术,使用缓存可以大大降低服务器的压力。目前常见的缓存工具都很好地解决了生命周期、存储、命中率等关键算法,但是绝大多数的缓存框架对于数据更新都是阻塞式的,即当缓存过期时会等待应用程序重新获取值。其性能曲线类似下图(假设刷新一次需要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  密码:无)

加载中

评论(0)

暂无评论

暂无资讯

暂无问答

web缓存系统 NCache

NCACHE 是基于 NGINX 的 WEB 服务器模型构件起来的缓存系统, 是SINA公司的开源产品. 起初的目的是为了提升缓存响应速度而开发的,因为SQUID实在比较慢, 而NGINX的优势就在于网络服务上,所以N...

2011/12/04 21:36
174
0
NCache实现Oracle数据与分布式缓存数据同步三个步骤

多层次结构的应用程序是目前发展的趋势,这种程序都需要庞大的数据库支持。而数据传输的能力直接影响程序性能,成为程序可扩展性的瓶颈。因此很多开发者开始在程序中使用内存分布式缓存来提高...

2013/09/17 15:34
201
0
NCache包装微软Azure分布式缓存示意图

NCache包装微软Azure分布式缓存使用2中方法,一种是.Net和Java应用程序Memcached插件,另外一个是就是Memcached网关。 Memcached插件 NCache的Memcached插件,为.Net和Java应用程序,提供可以...

2014/06/03 13:30
78
0
NCache控件使用说明免费下载

NCache 是一个基于 .NET 应用程序关键任务的集群存储器对象缓存。 NCache 也能对运行在服务器的 .NET 应用程序提供一个可升级的 ASP.NET Clustered Session State 解决方案。分布式缓存和会话...

2014/04/29 10:52
111
0
可升级的 ASP.NET Clustered Session State 解决方案NCache

NCache 是一个基于 .NET 应用程序关键任务的集群存储器对象缓存。 NCache 也能对运行在服务器的 .NET 应用程序提供一个可升级的 ASP.NET Clustered Session State 解决方案。分布式缓存和会其...

2014/04/23 11:28
165
0
maya aliembic 导出的一些重要参数

http://download.autodesk.com/global/docs/maya2014/zh_cn/index.html?url=files/Alembic_Export.htm,topicNumber=d30e110406 Some very important parameter for exporting Aliembic from ...

2014/11/20 18:07
15
0
OpenLDAP使用BDB时的一些配置和维护方法

OpenLDAP使用BDB时的一些配置和维护方法

2015/01/22 10:55
1K
0
Nginx技术手册

Nginx技术手册: --------------------------------手册------------------------------- Nginx安装与配置-李强强.pdf http://vdisk.weibo.com/s/muClF Nginx高端资料-李强强.pdf http://vdi...

2013/01/11 21:49
428
0
闲谈 Web 图片服务器

现在很多中小网站(尤其是 Web 2.0 站点) 都允许用户上传图片,如果前期没有很好的规划,那么随着图片文件的增多,无论是管理还是性能上都带来很多问题。就自己的一点理解,抛砖引玉,以期能引...

2014/04/15 13:32
141
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部