Memcached 是一个独立的服务器程序(用 C/C++ 编写),而 Java 客户端是一个 Java 库(JAR 包),用于让你的 Java 应用程序能够与 Memcached 服务器进行通信。

您需要做两件事:
- 下载并安装 Memcached 服务器。
- 下载并集成 Java 客户端库到您的 Java 项目中。
第一步:下载并安装 Memcached 服务器
Java 客户端需要与一个正在运行的 Memcached 服务器对话,您必须先安装它。
下载 Memcached 服务器软件
- 官方主页: http://memcached.org/
- 下载页面: http://memcached.org/downloads
- 源代码: 下载通常是
.tar.gz(Linux/macOS) 或.zip(Windows) 格式的源代码包。
安装和启动 (以 Linux 为例)
# 1. 解压 tar -zxvf memcached-1.x.x.tar.gz cd memcached-1.x.x # 2. 编译和安装 (需要先安装 libevent 库) # 在 Debian/Ubuntu 上: sudo apt-get install libevent-dev # 在 CentOS/RHEL 上: sudo yum install libevent-devel ./configure make sudo make install # 3. 启动 Memcached 服务器 # -d: 作为守护进程在后台运行 # -m: 分配给 Memcached 的内存大小,单位是 MB # -p: 监听的端口,默认是 11211 # -l: 监听的 IP 地址,默认是 0.0.0.0 (所有网络接口) sudo memcached -d -m 64 -p 11211 -l 127.0.0.1
您的 Memcached 服务器已经在 0.0.1:11211 上运行了。
第二步:下载并集成 Java 客户端库
这是您问题的核心,Java 社区有几个流行的 Memcached 客户端库,最主流和推荐的是 Xmemcached 和 SpyMemcached。

推荐方案:Xmemcached
Xmemcached 是目前性能最好、功能最全、维护最活跃的 Java Memcached 客户端之一。
下载方式 (推荐使用 Maven/Gradle)
现代 Java 项目强烈推荐使用构建工具来管理依赖,而不是手动下载 JAR 包。
使用 Maven:
在您的 pom.xml 文件中添加以下依赖:
<dependency>
<groupId>com.googlecode.xmemcached</groupId>
<artifactId>xmemcached</artifactId>
<version>2.4.7</version> <!-- 请使用最新版本 -->
</dependency>
使用 Gradle:
在您的 build.gradle 文件中添加以下依赖:

implementation 'com.googlecode.xmemcached:xmemcached:2.4.7' // 请使用最新版本
手动下载 JAR 包 (不推荐)
如果您不使用构建工具,可以从 Maven 中央仓库手动下载。
- Maven 中央仓库地址: https://mvnrepository.com/artifact/com.googlecode.xmemcached/xmemcached
- 进入页面后,选择您需要的版本,然后点击 "Files" 列表中的
.jar链接进行下载。 - 下载后,将 JAR 文件添加到您的项目类路径 中。
其他备选方案:SpyMemcached
SpyMemcached 是另一个非常经典和稳定的客户端,由 Couchbase 公司(原 Northscale)维护。
下载方式 (推荐使用 Maven/Gradle)
使用 Maven:
在您的 pom.xml 文件中添加以下依赖:
<dependency>
<groupId>net.spy</groupId>
<artifactId>spymemcached</artifactId>
<version>2.12.3</version> <!-- 请使用最新版本 -->
</dependency>
使用 Gradle:
在您的 build.gradle 文件中添加以下依赖:
implementation 'net.spy:spymemcached:2.12.3' // 请使用最新版本
手动下载 JAR 包
- Maven 中央仓库地址: https://mvnrepository.com/artifact/net.spy/spymemcached
- 同样,进入页面选择版本并下载 JAR 包。
第三步:Java 代码示例 (使用 Xmemcached)
添加完依赖后,您就可以在 Java 代码中使用它了。
import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.MemcachedClientBuilder;
import net.rubyeye.xmemcached.XMemcachedClient;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.auth.AuthInfo;
import net.rubyeye.xmemcached.exception.MemcachedException;
import net.rubyeye.xmemcached.utils.AddrUtil;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.util.concurrent.TimeoutException;
public class MemcachedExample {
public static void main(String[] args) {
// 1. 创建 MemcachedClient 客户端
// AddrUtil.getAddresses("127.0.0.1:11211") 是一个连接字符串,可以指定多个服务器,用空格隔开
MemcachedClient memcachedClient = null;
try {
memcachedClient = new XMemcachedClient("127.0.0.1", 11211);
// 2. 存储数据
// set(key, expiration, value)
// expiration: 过期时间,0 表示永不过期(以秒为单位)
System.out.println("Setting key 'hello' with value 'world'...");
boolean setSuccess = memcachedClient.set("hello", 0, "world");
System.out.println("Set operation result: " + setSuccess);
// 3. 获取数据
System.out.println("Getting value for key 'hello'...");
String value = memcachedClient.get("hello");
System.out.println("Got value: " + value);
// 4. 替换数据
System.out.println("Replacing key 'hello' with new value 'java'...");
boolean replaceSuccess = memcachedClient.replace("hello", 0, "java");
System.out.println("Replace operation result: " + replaceSuccess);
value = memcachedClient.get("hello");
System.out.println("Got new value: " + value);
// 5. 删除数据
System.out.println("Deleting key 'hello'...");
boolean deleteSuccess = memcachedClient.delete("hello");
System.out.println("Delete operation result: " + deleteSuccess);
value = memcachedClient.get("hello");
System.out.println("Value after deletion: " + value); // 应该输出 null
// 6. 使用 CAS (Check-And-Set) 机制
// 先设置一个值
memcachedClient.set("cas_key", 0, "initial_value");
// 获取 CAS 值
long cas = memcachedClient.gets("cas_key").getCas();
System.out.println("CAS value for 'cas_key': " + cas);
// 尝试使用 CAS 值进行更新
boolean casSuccess = memcachedClient.cas("cas_key", 0, "updated_value", cas);
System.out.println("CAS update result: " + casSuccess);
} catch (IOException | MemcachedException | TimeoutException | InterruptedException e) {
e.printStackTrace();
} finally {
// 7. 关闭客户端
if (memcachedClient != null) {
try {
memcachedClient.shutdown();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
| 步骤 | 操作 | 关键资源/命令 |
|---|---|---|
| 服务器 | 下载并安装 Memcached 服务器 | memcached.org |
| 客户端库 | 选择一个 Java 客户端库并集成到项目 | 推荐: Xmemcached on Maven Central |
| 项目集成 | 使用 Maven/Gradle 添加依赖或在项目中手动添加 JAR | Maven: <dependency>...</dependency> |
| 编码 | 编写 Java 代码连接并操作 Memcached | 示例代码见上 |
建议:对于新项目,强烈推荐使用 Xmemcached,并通过 Maven 或 Gradle 来管理依赖,这是最现代、最便捷、最不容易出错的方式。
