java cache_比较Java中几种数据cache方式 | 学步园

news/2024/7/7 11:52:42

现在很多网站一说到cache就想到memcached,memcached确实是非常优秀的系统,但是在某些场合,特别在不是分布式应用的场合,或者某些数据不需要分布式的访问,那它就未必是最佳的选择。

下面比较3种cache方式,用测试结果说话

Map,严格的说不能算cache,它适合本机访问,没有过期时间,不适合大容量,不能预计长度的数据,可能会使内存耗尽。

ehcache,可设过期时间,当超过指定内存数量,可设置淘汰

Memcached, 适合分布式缓存,可设过期时间

1. 环境

OS: Linux, Ubuntu 7.04 64-bit

Memory: 4G

CPU: Intel(R) Pentium(R) D CPU 2.66GHz

SCSI DISK, ext3 file system

libevent 1.3e

Memcached 1.2.4

Java 1.6.0

2. 测试方法

Key: 数字,1~100万

数据:100字节字符串

// put 100 char

Element e = new Element(String.valueOf(n), "blah.....blah... 100 chars...");

cache.put(e);

Memcache的设置方法参看memcachedb的性能测试

3. ehcache 设置

maxElementsInMemory="1000000"

eternal="true"

overflowToDisk="false"

timeToIdleSeconds="36000"

timeToLiveSeconds="36000"

diskPersistent="false"

diskExpiryThreadIntervalSeconds="120"

memoryStoreEvictionPolicy="LRU"

/>

4. 测试结果

类型

测试数据

平均速度(次/秒)

最大速度(次/秒)

占用内存

Thread(s)

HashMap.put*

1千万

146,268

254,262

1344.18MB

1*

Hashtable.put

1千万

128,752

253,911

1572.52MB

4

EHCache.put

1千万

118,399

381,601

1245.08MB

4

Memcached.put

1百万

16,515

19,942

118.20MB

4

* HashMap 不是线程安全,多线程测试无意义。

* 未比较GET测试结果,由于GET测试先要模拟一定数据,用空表去测试GET结果可能无意义。(但是GET比较可能更重要,有时间补上)

补充:

写完几天之后无意在网上看到这两篇文章:一正一反,

File?id=df6bm3k3_5dpkd6cfm

反方:Unfair Benchmarks of Ehcache vs Memcached,貌似国内访问不到,里面意思是说要用memcached的getmulti方式测试比较才公平。另外担心ehcache中LRU算法GC不能回收内存。


http://www.niftyadmin.cn/n/3337878.html

相关文章

已经有windows再装linux,原有windows,现想再装linux,疑问?

hugogz 于 2009-02-27 17:05:55发表:安装时注意不要选错区就OK了hugogz 于 2009-02-27 17:05:52发表:安装时注意不要选错区就OK了三叶草 于 2009-02-27 12:41:01发表:你要是装LINUX的话,先把要装的空间留出来分为LINUX分区就可以装了li659258510 于 2009-02-27 03:1…

生产模块学习笔记(一)

原来的想法是能深入了解ERP中的一个模块,做得专一些,认真分析一下代码.现在看来这种想法是不可取的,ERP是个系统的工程,断章取义地弄一个模块会有一种瞎子摸象的感觉.在财务和物流模块了解一点后,轮到生产模块了.各个企业真正有个性的地方体现在生产,财务国家国家有统一的制度,…

java的linkedlist_JAVA LinkedList和ArrayList的使用及性能分析

第1部分 List概括List的框架图List 是一个接口,它继承于Collection的接口。它代表着有序的队列。AbstractList 是一个抽象类,它继承于AbstractCollection。AbstractList实现List接口中除size()、get(int location)之外的函数。AbstractSequentialList 是…

c语言能够编出功能复杂的程序,c语言实习心得(8页)-原创力文档

第第 PAGE 1 页 共 NUMPAGES 1 页c语言实习心得C语言是一种计算机程序设计语言,属高级语言范畴。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言&#x…

Ubuntu 使用经验

2019独角兽企业重金招聘Python工程师标准>>> 这是我在Ubuntu 上写的第一篇博客,折腾两三个星期的时间,总结出来一点经验,喜欢的朋友支持下。 首先使用软碟通刻录Ubuntu U盘启动盘, http://jingyan.baidu.com/article/1…

IT外包三个阶段九项注意

IT外包项目动辄涉及数百万美元,公司往往还希望通过外包能带来管理和投资方面的改变。所以落实各种办法,解决各种外包过程中产生的问题极为重要。 但是,IT决策人在处理整个外包项目过程中真正需要的不仅仅是较好的区分轻重缓急的能力&#xff…

张亚勤领导力之“韧” 从科学家到商业领袖

从神童,到科学家,再到商业领袖,42岁的张亚勤正经历着人生的转变。在中国这个市场上,微软近几年来发展良好,但同样机遇与危机并存。 如何管理好这家全球最大的软件厂商的中国分公司,张亚勤认为,作…

学习过程中的图形学知识补充用文档

有关切线法线的文章,讲的很仔细 http://blog.csdn.net/bonchoix/article/details/8619624转载于:https://www.cnblogs.com/blueroses/p/6197604.html