三级!史上最快的假奶

前文见 假奶大过天 -- Java缓存初探1


那天用 p6spy 测了一下生成的sql语句,吓了陈老师一大跳,每个页面请求还是执行了相当多的重复查询语句,ct 的mysql服务器不容易啊。检查了一下 toplink 配置文件没有太奇怪的地方,难道丫的二级缓存 天生残废

看来加上三级假奶缓存是当务之急

三级也不是那么简单的事情,虽然简单说就是在DAO中间 一层:



缓存策略上木有考虑太多,但是像整表刷新的做法在交互程序上的效率太差,把list和单个bean的处理分开来,按说会稍有改善,但是怎么说也要基于Entity做一点小工作:



用法:


这样,要给每个表映射类分配两个 假奶池


三级缓存管理是一个接口,具体用什么缓存可以随便换,这里用上史上最快的,当然,这个benchmark不一定信得过:





看看本地的 命中率:




在首页访问率高的情况下,达到较高的命中率还是有希望的。


然后, whirlycache 的用法其实也相当简单:

//Use the cache manager to create the default cache
Cache c = CacheManager.getInstance().getCache();

//Put an object into the cache
c.store("yourKeyName", new WhateverObject());

//Get the object back out of the cache
WhateverObject o = (WhateverObject) c.retrieve("yourKeyName");

//Shut down the cache manager
CacheManager.getInstance().shutdown();




题外,搜着一个hibernate的插件文章

接口命名上倒是和现在用的一样...

package net.sf.hibernate.cache;

import java.util.Properties;

/**
* Cache Provider Factory for Whirly Cache
*
* @author Daniel Bradby
*/
public class WhirlyCacheProvider implements CacheProvider
{
/**
* @param Name of the cache. Must match a cache configured in whirlycache.xml
* @param Properties not used
* @return A new cache
* @throws CacheException if any errors occur while creating the cache (eg. bad config)
*/
public Cache buildCache(String name, Properties properties) throws CacheException
{
return new WhirlyCache(name);
}

/**
* Returns the next timestamp.
*/
public long nextTimestamp()
{
return Timestamper.next();
}
}
 发布时间:2008-09-29 17:35:08 | 阅读:205 | 评论:0 

你可能感兴趣的:(Hibernate,mysql,bean,cache,C#)