Linux上Memcache服务器端的安装与两种java客户端调用示例

Linux下Memcache服务器端的安装与两种java客户端调用示例
Linux下Memcache服务器端的安装与两种java客户端调用示例

Memcache安装:
1.Memcache用到了libevent这个库用于Socket的处理,如果系统没有安装libevent,需要先安装libevent。
官网:http://www.monkey.org/~provos/libevent/
这个东西在配置时需要指定一个安装路径,即./configure –prefix=/usr,然后make,然后make install。
测试libevent是否安装成功:
# ls -al /usr/lib | grep libevent
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent-1.2.so.1 -> libevent-1.2.so.1.0.3
-rwxr-xr-x 1 root root 263546 11?? 12 17:38 libevent-1.2.so.1.0.3
-rw-r–r– 1 root root 454156 11?? 12 17:38 libevent.a
-rwxr-xr-x 1 root root 811 11?? 12 17:38 libevent.la
lrwxrwxrwx 1 root root 21 11?? 12 17:38 libevent.so -> libevent-1.2.so.1.0.3
如果有以上信息,表明libevent已经装好了。
2.下载memcache最新版本:
http://code.google.com/p/memcached/downloads/list
需要在配置时需要指定libevent的安装路径即./configure –with-libevent=/usr,然后make,然后make install,安装完成后会把memcached放到 /usr/local/bin/memcached 。
测试是否成功安装memcached:
# ls -al /usr/local/bin/mem*
-rwxr-xr-x 1 root root 137986 11?? 12 17:39 /usr/local/bin/memcached
-rwxr-xr-x 1 root root 140179 11?? 12 17:39 /usr/local/bin/memcached-debug
memcached的基本设置:
1.启动Memcache的服务器端:
# /usr/local/bin/memcached -d -m 100 -u root -l 127.0.0.1 -p 12000 -c 256 -P /tmp/memcached.pid
-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB,我这里是100MB,
-u是运行Memcache的用户,我这里是root,
-l连接的IP地址, 默认是本机,
-p是设置Memcache监听的端口,默认是11211,
-c选项是最大运行的并发连接数,默认是1024,
-P是设置保存Memcache的pid文件,我这里是保存在 /tmp/memcached.pid
-f 块大小增长因子,默认是1.25,
-n 最小分配空间,key+value+flags默认是48,
-h 显示帮助,
-v 输出警告和错误信息,
-vv 打印客户端的请求和返回信息,
-M 内存耗尽时返回错误,而不是删除项

memcached启动的时候最容易出的一个错误时找不到libevent.so.2
报如下错误:error while loading shared libraries: libevent.so.2: cannot open shared object file: No such file or directory
这时候我们可以执行如下命令:LD_DEBUG=libs /usr/local/bin/memcached -v
2.如果要结束Memcache进程,执行:
# kill `cat /tmp/memcached.pid`

也可以启动多个守护进程,不过端口不能重复。

Java客户端:
目前主要有两种客户端:
1. https://github.com/gwhalin/Memcached-Java-Client/
2. http://code.google.com/p/spymemcached/
简单例子如下:

public  void testDanga() {
		/*初始化SockIOPool,管理memcached的连接池*/
		String[] servers = { "192.168.0.10:11211"};
		SockIOPool pool = SockIOPool.getInstance();
		pool.setServers(servers);
		pool.setFailover(true);
		pool.setInitConn(10);
		pool.setMinConn(5);
		pool.setMaxConn(250);
		//设置主线程睡眠时间,每30秒苏醒一次,维持连接池大小
		pool.setMaintSleep(30);
		//关闭套接字缓存
		pool.setNagle(false);
		//连接建立后的超时时间
		pool.setSocketTO(3000);
		pool.setAliveCheck(true);
		pool.initialize();
	    /*建立MemcachedClient实例*/
		MemCachedClient memCachedClient = new MemCachedClient();
		memCachedClient.set("key1", "haha");
		String result = (String) memCachedClient.get("key1");
		System.out.println(result);
	}
	
	public void testSpy() {
	    try{
			MemcachedClient mc = new MemcachedClient(new         InetSocketAddress("192.168.0.10", 11211));
			Future<Boolean> b = null;
			/*将key值,过期时间(秒)和要缓存的对象set到memcached中*/
			b = mc.set("key2", 9000, "heihei");
			Object result = mc.get("key2");
			if(null!=result){
				System.out.println(result.toString());
			}
			if(b.get().booleanValue()==true){
				mc.shutdown();
			}
		}catch(Exception ex){
			ex.printStackTrace();
		}
	}

设置用户名、密码:
启用SASL验证机制
SASL全称Simple Authentication and Security Layer,是一种用来扩充C/S模式验证能力的机制。
简单来说SASL是一个胶合(glue)库,通过这个库把应用层与形式多样的认证系统整合在一起。这有点类似于 PAM,但是后者是认证方式,决定什么人可以访问什么服务,而SASL是认证过程,侧重于信任建立过程,这个过程可以调用PAM来建立信任关系。在这里Memcached就是上面提到的应用层,具体的认证交给SASL库,SASL会根据相应的认证机制来完成验证功能。
默认情况下,Red Hat Enterprise Linux安装程序会自动安装Cyrus-SASL认证包。可使用下面的命令检查系统是否已经安装了Cyrus-SASL认证包或查看已经安装了何种版本。
Java代码  
1. rpm -qa | grep sasl 

下列结果表示已经安装.
Java代码  
1. cyrus-sasl-plain-2.1.23-8.el6.i686 
2. cyrus-sasl-devel-2.1.23-8.el6.i686  <br

Linux上Memcache服务器端的安装与两种java客户端调用示例

相关文章:

你感兴趣的文章:

标签云: