欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

xmemcached简单使用

程序员文章站 2022-03-04 15:01:12
...

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();
		}
	}
}

 

 

相关标签: 缓存