浅谈我对JCS 的理解
来源:互联网 发布:工程设计软件培训 编辑:程序博客网 时间:2024/05/22 15:16
JCS 是Java 中缓存的一种实现,支持将数据缓存到内存和硬盘中,支持设置缓存对象的有效时长。
我认为可以这么理解JCS:客户端向服务器发出请求,服务器就先去缓存中查一下有没有客户端请求的数据,有则直接使用;没有则服务器去连接数据库查询数据,然后将数据传给用户的同时也存到缓存中,供下一次使用。若是缓存满了就根据所设置的调度算法(如:最近最少算法)去删除缓存中的对象,若是缓存中的对象过了有效时长,也将被删除。
JCS 在项目中的实现
1、所需要使用到的架包如下:
commons-collections-3.2.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
concurrent-1.3.4.jar
jcs-1.2.7.9.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
concurrent-1.3.4.jar
jcs-1.2.7.9.jar
2、JCS 配置文件
配置JCS 就是简单地创建和填充一个cache.ccf 文件,这个文件定义缓存应该使用哪些区域,以及这些区域的属性或选项。根据应用程序的需求,配置这个文件可以快速扩展缓存。在JCS的配置文件中(WEB-INF/classes/cache.ccf),有一个默认配置(default),也可以对每个缓冲区(region)单独配置,没有单独配置特性的缓冲区将使用默认的配置
例如cache.ccf
# optional region "testCache1" specific configuration settings
jcs.region.testCache1=
jcs.region.testCache1.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.region.testCache1.cacheattributes.MaxObjects=1000
jcs.region.testCache1.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.testCache1.cacheattributes.UseMemoryShrinker=false
jcs.region.testCache1.elementattributes.IsEternal=false
jcs.region.testCache1.elementattributes.MaxLifeSeconds=180
jcs.region.testCache1.elementattributes.IsSpool=false
jcs.region.testCache1.elementattributes.IsLateral=false
jcs.region.testCache1.elementattributes.IsRemote=false
jcs.region.testCache1=
jcs.region.testCache1.cacheattributes=org.apache.jcs.engine.CompositeCacheAttributes
jcs.region.testCache1.cacheattributes.MaxObjects=1000
jcs.region.testCache1.cacheattributes.MemoryCacheName=org.apache.jcs.engine.memory.lru.LRUMemoryCache
jcs.region.testCache1.cacheattributes.UseMemoryShrinker=false
jcs.region.testCache1.elementattributes.IsEternal=false
jcs.region.testCache1.elementattributes.MaxLifeSeconds=180
jcs.region.testCache1.elementattributes.IsSpool=false
jcs.region.testCache1.elementattributes.IsLateral=false
jcs.region.testCache1.elementattributes.IsRemote=false
3、JCS 的实现
可以将JCS当做是一个特殊的Map来理解,其赋值、取值、移除值的方式均与Map相同。
import org.apache.jcs.JCS;
import org.apache.jcs.access.exception.CacheException;
public class CacheManage
{
public static void main(String[] args)
{
JCS cache=null;
try
{
cache = JCS.getInstance("testCache1");
String key = "test";
String value = "abcd";
for(int i =0; i<1000;i++)
{
cache.put(key+i, value+i);
}
}
catch (CacheException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("test100:"+cache.get("test100"));
System.out.println("test300:"+cache.get("test300"));
System.out.println("test1000:"+cache.get("test1000"));
}
}
import org.apache.jcs.access.exception.CacheException;
public class CacheManage
{
public static void main(String[] args)
{
JCS cache=null;
try
{
cache = JCS.getInstance("testCache1");
String key = "test";
String value = "abcd";
for(int i =0; i<1000;i++)
{
cache.put(key+i, value+i);
}
}
catch (CacheException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("test100:"+cache.get("test100"));
System.out.println("test300:"+cache.get("test300"));
System.out.println("test1000:"+cache.get("test1000"));
}
}
从上述实现的例子中,我们可以看出,使用JCS.getInstance()取的一个在cache.ccf 定义过得缓存域即可使用该缓存了。在多个类中是会共享缓存中的数据的。
0 0
- 浅谈我对JCS 的理解
- 浅谈 “我对 HOOKPE 的理解”
- 浅谈我对框架的理解
- 浅谈我对框架的理解
- 浅谈我对权限管理的理解
- 浅谈我对协程的理解
- 浅谈我对机器学习的理解
- 浅谈我对机器学习的理解
- 浅谈我对机器学习的理解
- 浅谈我对协程的理解
- 浅谈我对协程的理解
- 浅谈我对机器学习的理解
- 浅谈我对“活在当下”的理解
- 李航博士:浅谈我对机器学习的理解
- 李航博士:浅谈我对机器学习的理解
- 李航博士:浅谈我对机器学习的理解
- 浅谈我对DB INDEX (Davies Bouldin index)的理解
- 浅谈我对机器学习的一点理解
- IPCamera网络摄像机与RF射频技术和红外遥控技术的结合使用
- 高仿墨迹天气下拉拉伸图片
- 借助网盘搭建SVN服务器
- 小甲鱼PE详解之区块表(节表)和区块(节)(PE详解05) IMAGE_SECTION_HEADER
- 默认加载applicationContext.xml执行两边init-method的问题(WSServletContextListener)
- 浅谈我对JCS 的理解
- 登录界面 Android简单http get请求(含服务器端)四
- [#23 leetcode]Merge k Sorted Lists
- Logistic Regression 学习
- iOS 消息推送原理及实现总结_Provider(JAVA实现)
- NDK NDK_PROJECT_PATH=null 解决方法
- Mutex及Mutex::AutoLock
- 柴静十年看见了什么——一个央视记者的心灵史
- SQLServer 2012 可视化窗口中,设置“时间”默认值为“当前时间"