可做缓存的技术,Ehcache, Linkedhashmap, Memcached, Redis,视需求而定
LinkedHashMap 和Ehcache都是单机缓存技术,即只能在一个应用内实现缓存,不能实现多台机器使用相同的缓存区域(分布式缓存)
LinkedHashMap
的底层是用HashMap实现的,特点元素的排序是按链表方式排序,按写入或输出的顺序排序,最后一次写入或读取的元素放到最后
Map<String, String> map = new LinkedHashMap<String, String>(16, 0.75f, true);
for (int i = 0; i < 10; i++) {
map.put("key" + i, "value" + i);
}
map.get("key" + 3);
map.get("key" + 3);
map.get("key" + 9);
map.put("key" + 11, "value" + 11);
for (String value : map.keySet()) {
System.out.println(value);
}
输出:
key0
key1
key2
key4
key5
key6
key7
key8
key3
key9
key11
Ehcache
LinkedHashMap 只是一个JDK自带的类,而Ehcache是一个外部jar包,是java领域常用的缓存框架,鼎鼎大名的hibernate都是用Ehcache,但ehcache也可用使用某些技术支持在群集环境中使用,例如:
http://www.ibm.com/developerworks/cn/java/j-lo-ehcache/
http://www.cnblogs.com/yangy608/archive/2011/10/07/2200669.html
Memcached
Memcached是分布式缓存技术,需要独立部署,使多台机器可以使用同一个缓存服务器,实现集群的缓存共享。
Redis
Redis同样是分布式缓存技术,比Memcached更新,支持的数据类型更多,使用更方便,最重要的是:Memcached的数据只能存在内存中,重启后即消失,而Redis可以持久化,因此Redis可以作为一个NoSql数据库使用。如果没有历史遗留系统,初次引入缓存框架,建议用redis
两者比较的文章:
http://blog.csdn.net/tonysz126/article/details/8280696
http://blog.sina.com.cn/s/blog_72995dcc01018qkf.html
http://zhu-zhiguo.iteye.com/blog/2145253
http://stackoverflow.com/questions/2873249/is-memcached-a-dinosaur-in-comparison-to-redis