memcache如何使用java
Memcache 使用 Java 的步骤
添加依赖
在 Maven 项目中添加 spymemcached 依赖,这是 Java 中常用的 Memcached 客户端库。
<dependency>
<groupId>net.spy</groupId>
<artifactId>spymemcached</artifactId>
<version>2.12.0</version>
</dependency>
创建客户端连接
通过 MemcachedClient 类连接到 Memcached 服务器。需要指定服务器地址和端口。
import net.spy.memcached.MemcachedClient;
import java.net.InetSocketAddress;
MemcachedClient client = new MemcachedClient(
new InetSocketAddress("localhost", 11211)
);
存储数据
使用 set 方法存储键值对,可以设置过期时间(单位为秒)。
client.set("key", 3600, "value");
获取数据
通过 get 方法根据键名获取存储的值。
String value = (String) client.get("key");
System.out.println(value);
删除数据
使用 delete 方法删除指定键的数据。
client.delete("key");
关闭连接
操作完成后关闭客户端连接以释放资源。
client.shutdown();
高级操作
批量操作
通过 asyncGetBulk 方法可以批量获取多个键的值。
Map<String, Object> results = client.getBulk("key1", "key2", "key3");
CAS 操作
使用 CAS(Check-And-Set)实现原子性操作,避免并发冲突。
CASValue<Object> casValue = client.gets("key");
client.cas("key", casValue.getCas(), "new_value");
错误处理
捕获 OperationTimeoutException 和 RuntimeException 处理超时或其他异常。
try {
client.set("key", 3600, "value");
} catch (OperationTimeoutException e) {
System.err.println("Operation timed out");
} catch (RuntimeException e) {
System.err.println("Error: " + e.getMessage());
}
性能优化
连接池配置
通过 ConnectionFactoryBuilder 自定义连接池参数,如连接数和超时时间。
ConnectionFactoryBuilder builder = new ConnectionFactoryBuilder();
builder.setOpTimeout(1000); // 设置操作超时为 1 秒
MemcachedClient client = new MemcachedClient(
builder.build(),
AddrUtil.getAddresses("localhost:11211")
);
序列化优化
对于复杂对象,使用高效的序列化库(如 Kryo 或 Protobuf)减少存储和传输开销。

Kryo kryo = new Kryo();
kryo.register(MyClass.class);
byte[] serialized = KryoUtils.serialize(kryo, myObject);
client.set("object_key", 3600, serialized);
注意事项
- Memcached 是内存缓存,重启服务会导致数据丢失。
- 键名长度限制为 250 字节,值大小限制为 1MB。
- 默认不加密通信,敏感数据需在应用层加密。
- 生产环境建议配置多台服务器实现高可用。






