1、下载安装
1. 从http://jehiah.cz/projects/memcached-win32/ 上下载memcache的windows稳定版,解压放某个盘下面,比如在F:\memcached
2. 在终端(也即cmd命令界面)下输入 'F:\memcached\memcached.exe -d install' 安装
3. 再输入: 'F:\memcached\memcached.exe -d start' 启动
4.开发jar包下载:
memcached client for java:https://github.com/gwhalin/Memcached-Java-Client/downloads
spymemcached:http://code.google.com/p/spymemcached/
xmemcached:http://code.google.com/p/xmemcached/ --- 注意: 以后memcached将作为windows的一个服务每次开机时自动启动。默认端口:11211。
2、Memcahe的三种API
(1)、memcached client for java,memcache 最早推出的Java客户端API,并且不断更新,性能上得到提升并且稳定。
(2)、spymemcached
A simple,asynchronous,single-thread memcached client written in java.支持异步单线程的memcached客户端。
使用到JDK1.5听过的nio和concurrent,存取速度高于前者,但是稳定性不好,测试中常报TimeOut异常。
(3)、xmemcached
xmemcached同样是基于java nio的客户端,java nio 相对于传统io来说有效率高(特别是在处理并发方面)和资源耗费相对较少的优点。
传统io需要建立多个连接组成连接池,而nio只需要一个连接即可(nio也可以池化),减少了线程的创建和切换的开销,这一点在高并发操
作下尤为明显。因此,xmemcached和spymemcached在性能方面都非常优秀,在某些方面(存储的数据量比较小的情况下),xmemcached要
优于spymemcached。3、程序参考示例--见java测试文件
package com.boonya.mecache;
import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;
public class TestMemCached {
/**
* @param args
*/
public static void main(String[] args) {
/**
* 初始化SockIoPool,管理MemCached线程池
*/
String servers[]={"192.168.20.37:11211"};
SockIOPool pool=SockIOPool.getInstance();
pool.setServers(servers);
pool.setFailover(true);
pool.setInitConn(10);
pool.setMinConn(5);
pool.setMaxConn(300);
pool.setMaintSleep(30);
pool.setNagle(false);
pool.setSocketTO(3000);
pool.setAliveCheck(true);
pool.initialize();
/**
* 创建MemCachedClient实例
*/
MemCachedClient memcacheClient=new MemCachedClient();
for (int i = 0; i < 100; i++) {
boolean success=memcacheClient.set("key"+i,"a_memcached");//将对象加入到MemCache缓存
/**
* 读取MemCache缓存
*/
String result=(String) memcacheClient.get("key"+i);
System.out.println(String.format("set{%d}:%s",i,success));
System.out.println(String.format("get{%d}:%s",i,result));
}
}
}
package com.boonya.mecache;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import net.spy.memcached.MemcachedClient;
public class TestSpyMemCached {
public static void main(String[] args) throws InterruptedException, ExecutionException {
/**
* 建立MemCached的示例
*/
try {
MemcachedClient memcacheClient=new MemcachedClient(
new InetSocketAddress("192.168.20.37", 11211));
Future<Boolean> fbl=null;
/*将key,过期时间,对应的值设入到MemCache*/
fbl=memcacheClient.set("user:data:key", 1000, "me");
if(fbl.get().booleanValue()==true){
memcacheClient.shutdown();
}
} catch (IOException e) {
e.printStackTrace();
}
/**
* 获取MemCached的示例
*/
try {
MemcachedClient memcacheClient=new MemcachedClient(
new InetSocketAddress("192.168.20.37", 11211));
Object obj=memcacheClient.get("user:data:key");
System.out.println(obj);
memcacheClient.shutdown();
} catch (IOException e) {
e.printStackTrace();
}
}
}
package com.boonya.mecache;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.MemcachedClientBuilder;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.exception.MemcachedException;
import net.rubyeye.xmemcached.utils.AddrUtil;
public class TestXMemCached {
public static void main(String[] args) {
MemcachedClientBuilder builder=new XMemcachedClientBuilder(
AddrUtil.getAddresses("192.168.20.37:11211"));
try {
MemcachedClient memCacheClient=builder.build();
try {
memCacheClient.set("key", 0, "data");
String value=memCacheClient.get("key");
System.out.println("key:"+value);
memCacheClient.delete("key");
value=memCacheClient.get("key");
System.out.println("key:"+value);
memCacheClient.shutdown();
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (MemcachedException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
4、使用建议
(1)、 memcached client for java不断更新,性能上得到提升,并且稳定。
(2)、 xmemcached使用广泛,其有如下特点:高性能、支持完整的协议、支持客户端分布、允许设置节点权重、动态增删节点、支持JMX、Spring框架和
Hibernate-memcached的集成、客户端连接池、可扩展性好等。
分享到:
相关推荐
- 数据操作:通过客户端库提供的API,如get、set、delete等,Java应用可以方便地对Memcached进行数据读写。 - 键值策略:在Java应用中,开发者需要合理设计键值策略,确保数据的唯一性和高效查询。 3. 使用示例:...
Memcache 学习文档 for Java Demo Memcache 是一套分布式的高速缓存系统,由 LiveJournal 的 Brad Fitzpatrick 开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站...
### Java版Memcache缓存管理与开发 #### Memcache简介及其在高流量网站中的作用 在高流量网站中,为了缓解数据库的压力并提高网站响应速度,通常会采用Memcache作为缓存解决方案。Memcache是一种高性能、分布式...
Memcache使用哈希表(HashTable)来存储数据,数据通过键值对的形式存储在内存中,因此其读写速度快。它的设计目的是为了加速动态网页应用,减轻数据库的负担。它能够处理任意多的连接,使用非阻塞的网络IO,使得...
4. **主从复制与集群**: Redis支持主从复制,可以实现数据备份和读写分离。Redis Cluster是其官方提供的分布式解决方案,能自动将数据分散在多个节点上,实现水平扩展。 5. **高级功能**: Redis还提供了发布/订阅、...
2. **内存管理**:Memcache将所有数据存储在内存中,不涉及磁盘操作,因此读写速度极快。内存空间有限,当内存满时,会根据LRU(Least Recently Used)策略自动淘汰最近最少使用的数据。 3. **分布式架构**:多个...
**标题:“MemCache对象缓存应用”** **一、MemCache简介** MemCache是一种高性能、分布式内存对象缓存系统,广泛应用于Web应用中,...通过深入学习,开发者可以更有效地利用MemCache提升服务的响应速度和整体性能。
1. **内存存储**:Memcache 将数据存储在服务器的内存中,由于内存的读写速度远高于硬盘,因此可以显著提升数据访问效率。 2. **键值对存储**:Memcache 使用键值对(Key-Value)的方式存储数据,键是唯一的标识符,...
在构建高性能、高可用性的...总之,这个“tomcat7+nginx+memcached”程序包提供了一种高效、可靠的Web应用架构,通过Nginx实现负载均衡,借助Memcache实现跨服务器的Session共享,极大地提升了系统的可用性和扩展性。
Memcache的使用通常与PHP、Python、Java、Ruby等编程语言相结合,提供一个跨语言的内存数据存储解决方案。 "Memcache各种版本下载.txt"这个文件名可能包含了一个文本文件,该文件汇总了不同版本的Memcache下载链接...
1. 高性能:由于数据存储在内存中,Memcache的读写速度极快,显著提升了应用的响应速度。 2. 分布式:可以轻松扩展到多台服务器,以处理更大流量和数据量。 3. 简单易用:Memcache的API简单,支持多种编程语言,便于...
在并发处理能力上,Memcached由于其无锁的设计,通常能更好地处理高并发请求,而Ehcache则需要考虑Java的锁机制,可能在并发性能上稍逊一筹。 适用场景上,如果项目主要基于Java,且需要持久化存储或者复杂的缓存...
标题“memcache基本使用-已测试”涉及到的是一个关于Memcached缓存系统的基础教程或实践经验,其中可能包括如何安装、配置、以及在实际项目中如何使用Memcached来提高应用程序性能。描述中的“NULL”意味着没有提供...
Memcache是一种高性能的分布式内存对象缓存系统,它能够将数据存储在服务器的内存中,以减少对数据库的访问,从而显著提高网站的响应速度和处理能力。作为一款轻量级的缓存解决方案,Memcache在大型网站和高并发场景...
3. **内存存储**:所有的数据都存储在内存中,提供极快的读写速度,但数据非持久化,断电或重启后数据会丢失。 4. **过期机制**:每个存储的键值对都可以设置一个过期时间,超过这个时间,数据会被自动清除。 5. *...
Memcached 使用键值对(key-value)存储方式,允许开发者将数据存储在内存中,由于内存读取速度远超硬盘,因此能显著提升应用程序的响应速度。其主要特点包括: 1. **高性能**:Memcached 构建在libevent库之上,...
由于数据存储在内存中,Memcached具有极快的读写速度。但这也意味着其存储容量受到物理内存的限制,且数据在服务重启后会丢失。因此,它适合存储临时、非持久化的数据,如会话信息。 3. **键值对操作** Memcached...
它通过将经常访问的数据暂存到内存中,避免了频繁的数据库读写操作,从而显著提升了响应速度。Memcached尤其适合那些读取操作远多于写入操作的系统,例如社交媒体网站和内容管理系统。 在Java中,我们可以使用各种...
例如,Java的memcached client、spymemcached和xmemcached等客户端可以配置多个Memcache服务器地址,当一个服务器不可用时,会自动切换到其他服务器。 总结,Memcache作为一个高效的内存缓存系统,其部署和使用涉及...