a) 极其简单的研究总结了一下web缓存机制: mamcache 和EhCache 和Terracotta :
i. Mamcache:google之后,发现目前用的比较多的是:memcached client for java 和spymemcached ,以及xmemcached,但实践中发现maven 的jar库里面竟然没有对memcached client for java的支持。原理可能有些区别但发现使用起来都不是很复杂,
1. memcached client for java:
它可以设置一大堆参数,感觉定制性比较强,灵活,如:
可以在server中设置多台服务器,实现分布式。
public static void main(String[] args) {
/*初始化SockIOPool,管理memcached的连接池*/
String[] servers = { "192.168.1.20:12111" };
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(servers);
pool.setFailover(true);
pool.setInitConn(10);
pool.setMinConn(5);
pool.setMaxConn(250);
pool.setMaintSleep(30);
pool.setNagle(false);
pool.setSocketTO(3000);
pool.setAliveCheck(true);
pool.initialize();
/*建立MemcachedClient实例*/
MemCachedClient memCachedClient = new MemCachedClient()
2. spymemcached:
google了很久,也请教了老大,发现这个东西,有较少的参数可以自己定制,如:
MemcachedClient mc = new MemcachedClient(new InetSocketAddress(
"127.0.0.1", 11211));
Future<Boolean> b = null;
/* 将key值,过期时间(秒)和要缓存的对象set到memcached中 */
b = mc.set("xsaxas", 900, "someObject");
if (b.get().booleanValue() == true) {
mc.shutdown();
}
ii. EhCache :在google memacahe时发现在个的,貌似功能还很强大,还有专门的配置文件来配置参数,不单单可以做数据库之上的数据缓存,还可以缓存页面,将页面缓存起来,加速访问速度,提高用户体验,后来被Terracotta收购。
iii. Terracotta : 老大推荐的,可以真正的支持分布式缓存,上面的mancache只能是将数据存到多台服务器,但是memecahe服务器之间的数据不能共享,而这个Terracotta 可以实现多台服务器共享缓存相同的数据,Terracotta 集成了ehcache功能之外,还有大堆其它功能,还没有详细研究。