Memcached的java客户端已经存在三种了:
? 官方提供的基于传统阻塞io由Greg Whalin维护的客户端
? Dustin Sallings实现的基于java nio的Spymemcached
? XMemcached
1. 三种API比较
1) memcached client for java
较早推出的memcached JAVA客户端API,应用广泛,运行比较稳定。
A simple, asynchronous, single-threaded memcached client written in java. 支持异步,单线程的memcached客户端,用到了java1.5版本的concurrent和nio,存取速度会高于前者,但是稳定性不好,测试中常 报timeOut等相关异常。
XMemcached同样是基于java nio的客户端,java nio相比于传统阻塞io模型来说,有效率高(特别在高并发下)和资源耗费相对较少的优点。传统阻塞IO为了提高效率,需要创建一定数量的连接形成连接 池,而nio仅需要一个连接即可(当然,nio也是可以做池化处理),相对来说减少了线程创建和切换的开销,这一点在高并发下特别明显。因此 XMemcached与Spymemcached在性能都非常优秀,在某些方面(存储的数据比较小的情况下)Xmemcached比 Spymemcached的表现更为优秀,具体可以看这个Java Memcached Clients Benchmark。
由于memcached client for java发布了新版本,性能上有所提高,并且运行稳定,所以建议使用memcached client for java。
XMemcached也使用得比较广泛,而且有较详细的中文API文档,具有如下特点:高性 能、支持完整的协议、支持客户端分布、允许设置节点权重、动态增删节点、支持JMX、与Spring框架和Hibernate-memcached的集 成、客户端连接池、可扩展性好等。
下面给出这三种客户端的示例程序。
3. 示例程序
1) memcached client for java
从前面介绍的Java环境的Memcached客户端程序项目网址里,下载最新版的客户端程 序包:java_memcached-release_2.5.1.zip,解压后,文件夹里找到java_memcached- release_2.5.1.jar,这个就是客户端的JAR包。将此JAR包添加到项目的构建路径里,则项目中,就可以使用Memcached了。
示例代码如下:
package temp;
import com.danga.MemCached.*;
import org.apache.log4j.*;
public class CacheTest {
public static void main(String[] args) {
/**
* 初始化SockIOPool,管理memcached的连接池
* */
String[] servers = { "10.11.15.222:10000" };
SockIOPool pool = SockIOPool.getInstance();
pool.setServers(servers);
pool.setFailover(true);
pool.setInitConn(10);
pool.setMinConn(5);
pool.setMaxConn(250);
pool.setMaintSleep(30);
pool.setNagle(false);
pool.setSocketTO(3000);
pool.setAliveCheck(true);
pool.initialize();
/**
* 建立MemcachedClient实例
* */
MemCachedClient memCachedClient = new MemCachedClient();
for (int i = 0; i < 1000; i++) {
/**
* 将对象加入到memcached缓存
* */
boolean success = memCachedClient.set("" + i, "Hello!");
/**
* 从memcached缓存中按key值取对象
* */
String result = (String) memCachedClient.get("" + i);
System.out.println(String.format("set( %d ): %s", i, success));
System.out.println(String.format("get( %d ): %s", i, result));
}
}
}
spymemcached当前版本是2.5版本,官方网址是:http://code.google.com/p/spymemcached/。可以从地址:http://spymemcached.googlecode.com/files/memcached-2.5.jar 下载最新版本来使用。
示例代码如下:
package temp;
import java.net.InetSocketAddress;
import java.util.concurrent.Future;
import net.spy.memcached.MemcachedClient;
public class TestSpyMemcache {
public static void main(String[] args) {
// 保存对象
try {
/* 建立MemcachedClient 实例,并指定memcached服务的IP地址和端口号 */
MemcachedClient mc = new MemcachedClient(new InetSocketAddress("10.11.15.222", 10000));
Future<Boolean> b = null;
/* 将key值,过期时间(秒)和要缓存的对象set到memcached中 */
b = mc.set("neea:testDaF:ksIdno", 900, "someObject");
if (b.get().booleanValue() == true) {
mc.shutdown();
}
} catch (Exception ex) {
ex.printStackTrace();
}
// 取得对象
try {
/* 建立MemcachedClient 实例,并指定memcached服务的IP地址和端口号 */
MemcachedClient mc = new MemcachedClient(new InetSocketAddress("10.11.15.222", 10000));
/* 按照key值从memcached中查找缓存,不存在则返回null */
Object b = mc.get("neea:testDaF:ksIdno");
System.out.println(b.toString());
mc.shutdown();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Xmemcached的官方网址是:http://code.google.com/p/xmemcached/,可以从其官网上下载最新版本的1.2.4 来使用。地址是:http://xmemcached.googlecode.com/files/xmemcached-1.2.4-src.tar.gz 。
示例代码如下:
package temp;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
import net.rubyeye.xmemcached.utils.AddrUtil;
import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.MemcachedClientBuilder;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.exception.MemcachedException;
public class TestXMemcache {
public static void main(String[] args) {
MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil
.getAddresses("10.11.15.222:10000"));
MemcachedClient memcachedClient;
try {
memcachedClient = builder.build();
memcachedClient.set("hello", 0, "Hello,xmemcached");
String value = memcachedClient.get("hello");
System.out.println("hello=" + value);
memcachedClient.delete("hello");
value = memcachedClient.get("hello");
System.out.println("hello=" + value);
// close memcached client
memcachedClient.shutdown();
} catch (MemcachedException e) {
System.err.println("MemcachedClient operation fail");
e.printStackTrace();
} catch (TimeoutException e) {
System.err.println("MemcachedClient operation timeout");
e.printStackTrace();
} catch (InterruptedException e) {
// ignore
}catch (IOException e) {
System.err.println("Shutdown MemcachedClient fail");
e.printStackTrace();
}
}
}
相关推荐
gwhalin的Memcached Java客户端是一个轻量级、高性能的库,使得Java开发者可以轻松地与Memcached服务器进行交互。 ### 一、Memcached简介 Memcached是Danga Interactive公司开发的一个开源项目,主要用于存储和检索...
**Memcached Java客户端驱动包详解** Memcached是一种高性能的分布式内存对象缓存系统,用于减少数据库负载,提高网站性能。Java连接Memcached的驱动包使得Java开发者能够方便地与Memcached进行交互,实现数据的...
Memcached的java客户端已经存在三种了: 1.官方提供的基于传统阻塞io由Greg Whalin维护的客户端。 较早推出的memcached JAVA客户端API,应用广泛,运行比较稳定。 2.spymemcached,支持异步,单线程的memcached客户端...
这是MemCached的java客户端连接使用的例子,里面包含了MemCached的增删改查操作,对字符串 list set map 对象的操作等。看就会就入门了,
本文总结了作者对 Memcached 的使用经验和实践,包括封装 Memcached Java 客户端、实现缓存机制、频率控制和计数器机制等。 1. 封装 Memcached Java 客户端 作者在使用 Memcached 时,首先封装了 Memcached 的 ...
**Memcached之Java客户端开发详解** Memcached是一种高性能、分布式内存对象缓存系统,用于减少数据库负载,提高网站性能。它通过将数据存储在内存中,以快速响应来自应用程序的请求,避免了反复读取数据库的开销。...
Spymemcached 是一个轻量级且高度优化的 Memcached 客户端,它提供了简单易用的 API,使得在Java应用中集成 Memcached 变得轻松。使用 Spymemcached,你需要添加其 JAR 包到项目的类路径中。例如,在Maven项目中,...
Memcached Java客户端库允许Java开发者通过简单的API来存储和检索数据,这些数据被临时存储在内存中,以便快速访问。这个源码包可能是由Memcached的创始人或其团队维护的,确保了高质量和兼容性。 源码中的关键组成...
在Java开发中,有三种主流的Memcached客户端库供开发者选择:官方的基于传统阻塞IO的客户端、Dustin Sallings实现的基于Java NIO的Spymemcached以及XMemcached。 1. **官方客户端** 官方提供的客户端是由Greg ...
客户端是应用与Memcached交互的接口,常见的客户端库有libmemcached(C语言)、pylibmc(Python)和memcached-client(Java)等。客户端的主要任务包括: - **连接管理**:建立与服务端的TCP连接或Unix域套接字连接...
2. **Memcached Java客户端库** - Memcached-Java-Client是Java开发者与Memcached进行交互的主要工具,它提供了简单易用的API接口,允许开发者方便地在Java应用中存取缓存数据。 - 版本2.6.1是该客户端的一个稳定...
Memcached Java 客户端是 Memcached 的 Java 实现,提供了完整的 Memcached 功能。下载地址:https://github.com/gwhalin/Memcached-Java-Client/downloads。 Memcached 客户端代码 在 Java 中使用 Memcached ...
常见的Java Memcached客户端有spymemcached和xmemcached,这里以spymemcached为例。可以通过Maven在`pom.xml`文件中添加依赖: ```xml <groupId>net.spy</groupId> <artifactId>spymemcached <version>2.12.3 ...
Java Memcached是一个流行的Java客户端库,用于与Memcached缓存系统进行交互。Memcached是一种分布式内存对象缓存系统,常用于减轻数据库负载,提高Web应用的性能。在本例中,我们关注的是`java_memcached-release_...
Java客户端库使得Java开发者可以方便地与Memcached服务进行交互。标题中的"memcached java client jar包"指的是用于Java应用程序与Memcached服务器通信的Java库的JAR文件。 在Java应用中使用Memcached客户端,首先...
java memcached客户端进过一些性能上的优化,建立了集群的概念
在Linux系统上安装和配置memcached,并通过Java客户端进行调用是常见的操作流程,下面将详细介绍这一过程。 ### 一、memcached的Linux安装 1. **更新系统**: 首先确保你的Linux系统已经更新到最新版本,运行`sudo ...
**memCache源码分析——Java客户端** memCache是一款高性能、分布式的内存对象缓存系统,常用于减轻数据库的负载,提升应用性能。它的主要特点是基于内存存储,操作速度快,无持久化机制,适用于缓存非关键数据。在...
综上所述,这个压缩包中的JAR文件涵盖了Memcached Java客户端、会话管理、序列化机制、反射库、字节码操作、日志记录等多个方面,为构建高效、稳定且能够处理复杂数据类型的Java Memcached应用提供了完整的支持。...
在Java环境中,我们常常使用Java客户端库来与Memcached服务器进行交互。这个文档将深入探讨"performance"分支的Java源码,它是基于"master"分支优化后的版本,具有更高的性能表现。 ### 1. 性能优化策略 ...