memcache常用java客户端有三个:
1、memcached client for java
2、spymemcached
3、xmemcached
据说 xmemcached 上述三者中最优秀的。
xmemcached简单使用示例:
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(); } } }