StratoNCache-非阻塞式缓存框架

  • 授权协议:Apache
  • 开发厂商:未知
  • 开发语言:java
  • 收录时间:2020-09-15
  • 操作系统:Windows,Linux,OS X
  • 软件作者:未知
  • 开源标签: Strato

软件介绍

缓存是服务器程序中经常用到的技术,使用缓存可以大大降低服务器的压力。目前常见的缓存工具都很好地解决了生命周期、存储、命中率等关键算法,但是绝大多数的缓存框架对于数据更新都是阻塞式的,即当缓存过期时会等待应用程序重新获取值。

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

c8f00c61f246732706112cc9f338b215.png

阻塞式的缓存处理方式,每次的重新取值都会出现一次波峰,用户在使用系统的过程中将产生顿挫感。

NCache 建立了一套抽象的非阻塞式缓存模型与 API,应用 NCache 的缓存处理时效如下图所示:

d6a38343fbc95a3ef6bf3d2a06ae3917.png

使用 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  密码:无)

上一篇:Dynamo-分布式Key/Value存储引擎

下一篇:AdvancedReporterforMemcached

您可能感兴趣的文章

相关阅读

查看更多 >