Play
框架初探之缓存
Play
提供两种缓存方式:
-
JVM
内存缓存
-
使用Memcached
缓存
Play
的CacheImpl
接口(
不知道为什么如此命名)
中提供了safeDelete
,safeAdd
,incr,decr
等高级操作接口,但是两种机制内部实现却大有区别。
方式一基于JVM
内存的缓存方案通过重度封装Ehcache
来做内存缓存,Ehcache
的优点之一是引用非常简单。尽管Cache
是线程安全的,但是是对于set
和get
操作没有内置的timeout
接口,对于incr
和decr
操作需要手动处理并发,总的来说还是需要外层封装代码做不少工作。
// 实现increase需要手动处理并发
public synchronized long incr(String key, int by) {
Element e = cache.get(key);
if (e == null) {
return -1;
}
long newValue = ((Number) e.getValue()).longValue() + by;
Element newE = new Element(key, newValue);
newE.setTimeToLive(e.getTimeToLive());
cache.put(newE);
return newValue;
}
方式二使用Memcached
作为缓存实现,轻度封装了spyMemcached
来连接Memcached,
。spyMemcached
的初始化比较繁琐,但是其使用nio
和concurrent
包的一些机制,存取速度比同类的客户端要快。最重要的一点是spyMemcached
提供了丰富的操作接口,Play
不需要做额外的并发控制处理。
// 客户端提供了increase接口
public long incr(String key, int by) {
return client.incr(key, by, 0);
}
// 异步的safeAdd
public boolean safeAdd(String key, Object value, int expiration) {
Future<Boolean> future = client.add(key, expiration, value, tc);
try {
return future.get(1, TimeUnit.SECONDS);
} catch (Exception e) {
future.cancel(false);
}
return false;
}
总的来说,Play的缓存机制非常简单,选用了存取速度快但是稳定性欠妥的spyMemcached作为Memcached客户端,所以轻量、敏捷是Play所注重的
分享到:
相关推荐
PlayFramework框架缓存.pdf
play手册 play框架手册 play框架 play文档
play框架 ajax
libshairplay源码, airplay protocol中英文资料
play框架 2.1 api
play框架jar包,java开发人员使用play框架开发项目时的必备jar包
在Eclipse中使用play框架,并对mysql数据库进行简单的增删改查操作的javaweb项目,主要目的是给学习play框架的新手提供一个简单的例子,帮助其熟悉框架。
Play框架中文文档.pdf
play框架的搭建步骤,是我自己学习的总结
此资源是整个play框架外加一个helloworld小例子,下载解压到文件夹中可以直接进行play框架开发。
play框架基于CRDU的一个简单demo。附数据库文件。使用的是MySQL数据库。
play框架源码,可以用Scala和Java语言书写代码,简单高效
play框架是Java一站式web开发框架,附件是学习手册一份,帮助开发者快速上手该框架。
这是play框架的注解的简单介绍,里面有许多注解和使用方法
scala PLAY 框架 sbt仓库,国外链接太慢,下载这个放入cache或者cache同级目录local下(local自己新建)
PLAY框架入门级学习手册,有兴趣了解JAVA PLAY框架的可以看下
play框架文档(英文版) play框架介绍请谷歌一下
Play框架手册
这里是一个关于play框架的基础文档 介绍了play的使用过程等