使用Xmemcached客户端操作Memcached缓存系统
2016-05-06 15:56
225 查看
memcache常用Java客户端有三个:
1、memcached client for java
2、spymemcached
3、xmemcached
据说 xmemcached 上述三者中最优秀的。
xmemcached简单使用示例:
Java代码
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.MemcachedClientBuilder;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.auth.AuthInfo;
import net.rubyeye.xmemcached.command.BinaryCommandFactory;
import net.rubyeye.xmemcached.utils.AddrUtil;
public class MemcacheTest {
public static void main(String[] args){
String addr1 = "10.68.6.115:11212";
MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(addr1));
/**
* 同时使用多个memcache服务时,多个服务地址之间以空格分隔.
* 后面的int数组用于指定每个server的权重,权重大则存取压力大。
* String addr2 = "10.68.6.115:11211 10.68.6.115:11212";
*/
//MemcachedClientBuilder builder
// = new XMemcachedClientBuilder(AddrUtil.getAddresses(addr2),new int[]{1,1});
//设置账号密码
//如果memcache启用了sasl认证,但是客户端未提供有效账号密码,则抛出异常:
//Authentication required or not successful
//builder.addAuthInfo(AddrUtil.getOneAddress("10.68.6.115:11211"), AuthInfo.plain("root", "123456"));
//builder.addAuthInfo(AddrUtil.getOneAddress("10.68.6.115:11212"), AuthInfo.plain("root", "123456"));
//使用二进制文件
builder.setCommandFactory(new BinaryCommandFactory());
MemcachedClient client;
try {
client = builder.build();
//设置连接超时时间(2分钟),默认1分钟,单位毫秒
client.setConnectTimeout(2*60*1000);
//设置操作超时时间(3秒),默认1秒,单位毫秒
client.setOpTimeout(3*1000);
/**
* 存放数据
* String 第一个是存储的key名称,
* int 第二个是expire时间(单位秒),超过这个时间,memcached将这个数据替换出去,0表示永久存储(默认是一个月)
* Object 第三个参数就是实际存储的数据
* long 第四个参数 操作超时时间(单位毫秒默认1秒),优先级高于client.setOpTimeout
*/
client.set("key1", 100, "测试1",3000);//存放简单数据
//获取数据
String v = client.get("key1");
System.out.println(v);//测试1
//删除数据
boolean del = client.delete("key1");
v = client.get("key1");
System.out.println(v);//null
//存放集合类型
List list = new ArrayList();
Map mapdata = new HashMap();
mapdata.put("key1", "value1");
mapdata.put("key2", "value2");
list.add(mapdata);
client.set("list", 0, list);
List list2 = client.get("list");
System.out.println(list2);//[{key2=value2, key1=value1}]
} catch (Exception e) {
e.printStackTrace();
}
}
}
1、memcached client for java
2、spymemcached
3、xmemcached
据说 xmemcached 上述三者中最优秀的。
xmemcached简单使用示例:
Java代码
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.MemcachedClientBuilder;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.auth.AuthInfo;
import net.rubyeye.xmemcached.command.BinaryCommandFactory;
import net.rubyeye.xmemcached.utils.AddrUtil;
public class MemcacheTest {
public static void main(String[] args){
String addr1 = "10.68.6.115:11212";
MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(addr1));
/**
* 同时使用多个memcache服务时,多个服务地址之间以空格分隔.
* 后面的int数组用于指定每个server的权重,权重大则存取压力大。
* String addr2 = "10.68.6.115:11211 10.68.6.115:11212";
*/
//MemcachedClientBuilder builder
// = new XMemcachedClientBuilder(AddrUtil.getAddresses(addr2),new int[]{1,1});
//设置账号密码
//如果memcache启用了sasl认证,但是客户端未提供有效账号密码,则抛出异常:
//Authentication required or not successful
//builder.addAuthInfo(AddrUtil.getOneAddress("10.68.6.115:11211"), AuthInfo.plain("root", "123456"));
//builder.addAuthInfo(AddrUtil.getOneAddress("10.68.6.115:11212"), AuthInfo.plain("root", "123456"));
//使用二进制文件
builder.setCommandFactory(new BinaryCommandFactory());
MemcachedClient client;
try {
client = builder.build();
//设置连接超时时间(2分钟),默认1分钟,单位毫秒
client.setConnectTimeout(2*60*1000);
//设置操作超时时间(3秒),默认1秒,单位毫秒
client.setOpTimeout(3*1000);
/**
* 存放数据
* String 第一个是存储的key名称,
* int 第二个是expire时间(单位秒),超过这个时间,memcached将这个数据替换出去,0表示永久存储(默认是一个月)
* Object 第三个参数就是实际存储的数据
* long 第四个参数 操作超时时间(单位毫秒默认1秒),优先级高于client.setOpTimeout
*/
client.set("key1", 100, "测试1",3000);//存放简单数据
//获取数据
String v = client.get("key1");
System.out.println(v);//测试1
//删除数据
boolean del = client.delete("key1");
v = client.get("key1");
System.out.println(v);//null
//存放集合类型
List list = new ArrayList();
Map mapdata = new HashMap();
mapdata.put("key1", "value1");
mapdata.put("key2", "value2");
list.add(mapdata);
client.set("list", 0, list);
List list2 = client.get("list");
System.out.println(list2);//[{key2=value2, key1=value1}]
} catch (Exception e) {
e.printStackTrace();
}
}
}
相关文章推荐
- memcache 连接
- memcache 怎么存储的对象
- Redis缓存与Memcached的比较
- Memcached 使用中的问题
- memcache简介以及使用方法
- Memcache与memcached
- Memcached 一致性hash实现
- linux centos 安装php的memcache扩展
- php 的两个扩展 memcache 和 memcachd
- 理论加实践,谈谈我对memcached的学习感悟!
- PHP静态变量定义memcache对象的调用
- 原创:分享封装好的面向JAVA的memcached客户端操作类
- Memcached——分布式缓存
- 安装memcached
- memcache 搜索十次
- Redis和Memcache的区别
- PHP7安装Memcache+Memcached缓存加速WordPress教程
- Memcached详解(较详细)
- Tomcat + Nginx + 主从 memcached + keepalived 实现高可靠的web 服务
- 全面解析windows下Memcache技术应用