为了测试线上服务,加缓存的效果,模拟了一个本地缓存,去测试一下加缓存后的命中率,代码如下:
import java.util.Date;
import java.util.Random;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicInteger;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* 统计任务,统计一下缓存的命中率
*/
public class StatTask {
public static Log logger = LogFactory.getLog("stat-cache");
public static AtomicInteger total = new AtomicInteger(0);
public static AtomicInteger cachedNum = new AtomicInteger(0);
public static ConcurrentHashMap<String, AtomicInteger> buffer = new ConcurrentHashMap<String, AtomicInteger>();
public static Executor executor = Executors.newFixedThreadPool(Runtime.getRuntime()
.availableProcessors() * 2);
public static void submit(final String url) {
executor.execute(new Runnable() {
@Override
public void run() {
try {
logger.info("link:" + url);
if (buffer.containsKey(url)) {
int num = buffer.get(url).incrementAndGet();
if (num % 10 == 0) {
logger.warn(String.format("url:%s be cached %d", url, num));
}
cachedNum.incrementAndGet();
} else {
buffer.put(url, new AtomicInteger());
}
total.incrementAndGet();
int cachedNumber = cachedNum.get();
int totalNum = total.get();
if (cachedNumber > 0 && cachedNumber % 100 == 0) {
logger.warn(String.format(
"cache hit %d and total:%d, 1.percentage of hits:%s", cachedNumber,
totalNum, cachedNumber / (1.0 * totalNum)));
}
} catch (Exception e) {
logger.error("统计cache命中率计数器出错:" + e.getMessage());
}
}
});
}
}
分享到:
相关推荐
缓存命中率是指,在查找前台缓存时,因为前台缓存是高速缓存,内存小,所以存在着找不到的情况!找不到某个项目的话,就要到后台查找,查找到并返回给用户,并在前台缓存中留一份!!! 这个系统探究的就是,高速...
针对安装缓存时的代价问题,从缓存的存储代价和未命中代价之间的平衡考虑,通过数据建模的方法,...通过模拟试验表明,该模型可以有效的确定一个最佳缓存容量,在保证较好命中率和字节命中率的前提下使缓存的代价最小。
通过自主研发的实验床模拟系统EmuStack,对C2Cache进行了性能分析与评估,实验结果表明,对比LCE、Random、ProbCache、LCD和Greedy主流缓存机制,C2Cache可有效提高缓存命中率,从而大幅度降低平均访问时延。...
环形缓存RingCache是一种模拟环形缓冲区的内存高速缓存,其中旧元素被逐出以为新元素腾出空间。 在不值得或不可能将所有访问的数据保留在内存中,并且某些元素比其他元素更频繁地访问的情况下,它最有用。 作为...
为了解决这个问题,我们建立了一个分布式网络内缓存模型,用于在CCN中制定内容放置和请求路由,旨在最大程度地减少带宽成本以及严格的存储和带宽限制。 基于提出的模型,我们设计了可扩展的,自适应的和低复杂度的...
针对超节点P2P系统的特点,提出了一种有效且灵活的缓存策略。该策略使用文件价值来...最后通过Trace-Driven的方法模拟实验,结果表明,与现有的缓存策略LRU和LFU相比,这种缓存策略具有较好的缓存命中率和字节命中率。
使用跟踪驱动的模拟,我们为服务器实现了一个激励兼容的基于市场的 Web 缓存,以将内容推送到缓存中。 该系统分散了缓存过程,因为服务器以竞价缓存空间的形式提供信息。 从服务器获得关于对象估价和命中率预测的...
通过跟踪驱动的模拟,我们表明在关于服务器估值的特定假设下,我们的算法提供了合理的 QoS 关系:值命中率越高的服务器的字节命中率越高。 我们进一步采用经济观点,即系统用户收到的价值是比命中率或字节命中率更...
计算机架构实验2 2020/04/12 伊利亚·扎卡9289 艾瑟夫·金索斯图图... 模拟毫秒消费物价指数数据缓存未命中率指令缓存未命中率L2缓存未命中率邮编160.703 1.607035 0.014133 0.000076 0.294739 壮观的118.547 1.18546
缓存可视化 CS351 的最终项目。规格20 分:幻灯片(与同学的规则相同,但如果你选择幻灯片可能会稍微多一些) 80 分:功能和附加文档 文档: 一个自述文件... 模拟应该显示每个缓存的命中率。 如果实现了访问时间功能,
10.5 统计Apache的客户缓存的命中率 378 10.6 在脚本中调用编辑器 379 10.7 备份文件 381 10.8 选择性地复制邮箱文件 383 10.9 通过邮箱创建一个邮件地址的白名单 384 10.10 阻塞重复邮件 386 10.11 检查你的...
受模型的启发,我们进一步设计了工作负载自适应的加载策略,并结合了有效的替换策略,以提高缓存命中率并减少替换的脏条目的回写。最后,我们使用广泛的跟踪驱动模拟来评估TPFTL。我们的评估结果表明,与最新的FTL...
针对现有缓冲区替换算法无法...实验选用基于MYSQL的TPC-C测试标准作为模拟仿真环境,实验结果证明:PWLRu不仅能保证缓存命中率不低于经典的最近最少使用替换算法(LRu),而且在闪存上的IO平均读取代价和能耗均优于LRU
内置Memcache数据库缓存技术,查询命中率在60%左右,降低数据库负担,提升查询效率,具体PHP+MYSQL+MEMCACHE配置请见该文档文末。 二、程序目录结构: |400.php ---号码类别数组存储文件 |400dianhua数据库.sql...