memcached配置和使用

memcached作为著名的分布式内存对象缓存系统,具有高性能、免费和开源的特点,在互联网应用中大行其道,用于加快web动态应用程序的响应和减轻数据库的负荷。

memcached的实现机制为K-V,类似Map容器机制。

Windows环境下载:

1. memcached的windows版本,地址在http://code.jellycan.com/memcached/,此例用的是memcached-1.2.6-win32-bin.zip。
2. 启动memcached服务

memcached.exe -d install
memcached.exe -d start 
3. java客户端:https://github.com/gwhalin/Memcached-Java-Client/downloads 

java_memcached-release_2.6.6.zip为java的连接客户端 
解压文件,将里面的jar包拷贝到项目的lib目录下。

Linux环境下载:

 

(1) 安装libevent

(apt-get install的:libevent好像没有被认出来)

下载  http://www.monkey.org/~provos/libevent-2.0.12-stable.tar.gz

libevent-2.0.12-stable$configure

libevent-2.0.12-stable$make

libevent-2.0.12-stable$sudo make install

(2)安装memcached

下载安装memcached1.4.5    

http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz

memcached-1.4.5$./configure

memcached-1.4.5$make

memcached-1.4.5$sudo make install

如果启动失败,找不到libevent,则连接一下

/usr/lib$ sudo ln -s /usr/local/lib/libevent-2.0.so.5 libevent-2.0.so.5

(3)启动

$ memcached

/**
 * Description 缓存中要保存的对象,必须将对象序列化才能保存
 * @author Administrator
 * 2012-10-16
 */
class User implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = -7969334018970422840L;
	
	public String userName;
	public String password;
}

public class MemcachedTest {
	
	static{
		// 服务器的地址
		String[] servers = {"127.0.0.1:11211", "127.0.0.2:11212"};
        //创建一个连接池  
        SockIOPool pool = SockIOPool.getInstance();  
        //设置缓存服务器  
        pool.setServers(servers);  
        //设置初始化连接数,最小连接数,最大连接数以及最大处理时间  
        pool.setInitConn(50);  
        pool.setMinConn(50);  
        pool.setMaxConn(500);  
        pool.setMaxIdle(1000 * 60 * 60);  
        //设置主线程睡眠时间,每3秒苏醒一次,维持连接池大小  
        //maintSleep 千万不要设置成30,访问量一大就出问题,单位是毫秒,推荐30000毫秒。  
        pool.setMaintSleep(3000);  
        //关闭套接字缓存  
        pool.setNagle(false);  
        //连接建立后的超时时间  
        pool.setSocketTO(3000);  
        //连接建立时的超时时间  
        pool.setSocketConnectTO(0);  
        //初始化连接池  
        pool.initialize();  
	}

	public static void main(String[] args) throws IOException {
		MemCachedClient c = new MemCachedClient();

		//存取一个简单的Integer
		// Store a value (async) for one hour
		c.set("someKey", new Integer(4), 3600);
		// Retrieve a value (synchronously).
		Object myObject = c.get("someKey");
		Integer result = (Integer) myObject;
		System.out.println(result);
		
		//存取一个序列化的对象
		System.out.println("存之前的时间:" + System.currentTimeMillis());
		
		User user1 = new User();
		user1.userName = "ZhangSan";
		user1.password = "alongpasswordhere";
		c.set("user1", user1, 3600);
		
		System.out.println("取之前的时间:" + System.currentTimeMillis());
		
		User myUser1 = (User)(c.get("user1"));
		System.out.println(myUser1.userName + " " + myUser1.password);
		
		System.out.println("取之后的时间:" + System.currentTimeMillis());
	}
	
}

猜你喜欢

转载自geeksun.iteye.com/blog/1698898