`
qindongliang1922
  • 浏览: 2144989 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:116255
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:124508
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:58360
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:70300
社区版块
存档分类
最新评论

Centos6.5下安装Memcached完整示例

阅读更多
Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据.简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

工作原理:

①客户端第一次访问应用程序时,会到数据库(RDBMS)中取出数据,返回给客户端;同时也将取出的数据保存到memcached中。

② 第二次访问时,因为数据已经缓存,不不用去数据库查询了,直接从memcached取。
那么memcached的快速和高效率是如何体现出来的呢?我们都清楚,RDBMS是文件型的数据库,最终还是以文件的形式保存在磁盘上。而memcached则不一样,它是key:value关系型的数据库,是保存在内存中的。那么就不用我再做说明了,内存的读写速度要比磁盘的读写速度快得多,前者是后者的10的6次方倍。http://blog.rekfan.com/?p=172


Memcached支持Linux系统,也支持Windows系统,分别需要不同的安装包,鉴于在Windows使用比较少,所以散仙今天就总结一下,在Centos下安装Memcached的整个流程,一方面是为了记录一下,防止日后生疏,另一方面也为刚刚使用Memcached的朋友们,提供一份入门的教程。

下面进入正题:


首先,memcached是基于libevent的,所以确保你的系统已经装了libevent,libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥O(1)的性能。 memcached使用这个libevent库,因此能在Linux、BSD、Solaris等操作系统上发挥其高性能。
由于memcached和libevent是由C编写的,所以首先确保你的系统安装了gcc,如果
没有安装,使用yum安装即可
命令: 
yum -y install gcc
yum -y install gcc-c++

然后下载libevent
然后上传centos,进行给予权限,然后解压
# tar xzvf libevent-2.0.21-stable.tar.gz ##解压
# cd libevent-2.0.21-stable
# ./configure --prefix=/usr
# make
# make install

安装完后可以查看下/usr/lib是否有libevent等文件(ls -al /usr/lib | grep libevent)

然后下载memcached

# tar xzvf memcached-1.4.15.tar.gz
# cd memcached-1.4.15
# ./configure --with-libevent=/usr
# make
# make install
安装结果(ls -al /usr/local/bin/memcached)如图:




关于memcache启动的一些参数说明:

memcached命令参数解释:

-p <num>          监听的端口
-l <ip_addr>      连接的IP地址, 默认是本机
-d start          启动memcached 服务
-d restart        重起memcached 服务
-d stop|shutdown  关闭正在运行的memcached 服务
-d install        安装memcached 服务
-d uninstall      卸载memcached 服务
-u <username>     以<username>的身份运行 (仅在以root运行的时候有效)
-m <num>          最大内存使用,单位MB。默认64MB
-M                内存耗尽时返回错误,而不是删除项
-c <num>          最大同时连接数,默认是1024
-f <factor>       块大小增长因子,默认是1.25
-n <bytes>        最小分配空间,key+value+flags默认是48
-h                显示帮助


然后执行命令启动memcached
#/usr/local/bin/memcached -d -m 1024 -u root -p 11211 -P /tmp/memcached.pid

然后就可以使用telnet,来测试memcache的连接状态,

如果没有安装telnet服务,可以执行
yum install telnet-server
安装服务
yum install telnet
安装命令

然后编辑vi /etc/xinetd.d/telnet 文件,激活telnet,默认是禁用的,截图如下:


然后重启服务,执行命令 service xinetd restart


然后就可以测试memcached的连接,执行命令
telnet 127.0.0.1 11211

输入stats,会输出memcache的一些连接信息,包括PID
如果需要退出,则执行quit命令即可,截图如下:




退出telnet,执行quit命令即可,上图所示的memcached进程ID,很重要,如果我们需要关闭memcached服务时,就可以执行命令,kill -9 进程号 即可。


最后,我们在来看下如何使用JAVA API,简单的来测试下memcached,注意如果memcached的端口号,需要对外开放,否则,将会出现连接不上的异常,测试环境我们可以把防火墙关闭测试:
用到的jar包,如下所示:


测试,程序核心代码和运行结果如下:

package com.test.client;

import java.net.InetSocketAddress;

import net.spy.memcached.MemcachedClient;
/**
 * @author qindongliang
 * 
 * JAVA流行技术交流群: 324714439
 * 测试memcached客户端连接
 * 
 * **/
public class TestClient {
	
	
	
	public static void main(String[] args) throws Exception{
		
		MemcachedClient client=new MemcachedClient(new InetSocketAddress("192.168.75.130", 11211));
		  //60是超时数,默认以秒为单位
		  client.set("test", 60, "1111测试memcache成功了吧");
	 
		
		 System.out.println(client.get("test"));
		  client.shutdown();//关闭连接
		
		
	}

}


控制台打印内容如下所示:
2014-03-18 18:13:30.008 INFO net.spy.memcached.MemcachedConnection:  Added {QA sa=/192.168.75.130:11211, #Rops=0, #Wops=0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0} to connect queue
2014-03-18 18:13:30.011 INFO net.spy.memcached.MemcachedConnection:  Connection state changed for sun.nio.ch.SelectionKeyImpl@33c3e6
1111测试memcache成功了吧
2014-03-18 18:13:30.020 INFO net.spy.memcached.MemcachedClient:  Shut down memcached client



至此,我们已经安装测试成功了,最后散仙把memcached的JAVA API所用到的jar上传上来,方便大家测试。


  • 大小: 73.8 KB
  • 大小: 150.1 KB
  • 大小: 267 KB
  • 大小: 78.5 KB
分享到:
评论
7 楼 qindongliang1922 2015-07-13  
留香不留名 写道
厉害,讲得很透彻! 但是俺在测试连接memcach的时候,怎么连的都连不上,我已经把虚拟机的防火墙关闭了,但还是连不上,我想问一下连接用的ip应该是在memcach的配置文件里面设置的吧,我用“127.0.0.1”代替的,但还是连不上,虚拟机和本地计算机的ip都试过了,也不行。楼主,有空的时候能否给俺指导一下,感激不尽!


就写你虚拟机的ip就可以了
6 楼 留香不留名 2015-07-13  
厉害,讲得很透彻! 但是俺在测试连接memcach的时候,怎么连的都连不上,我已经把虚拟机的防火墙关闭了,但还是连不上,我想问一下连接用的ip应该是在memcach的配置文件里面设置的吧,我用“127.0.0.1”代替的,但还是连不上,虚拟机和本地计算机的ip都试过了,也不行。楼主,有空的时候能否给俺指导一下,感激不尽!
5 楼 sgq0085 2014-07-04  
请问楼主安装Memcached之前是否执行 make test ?

同样是在CentOS6.5下,执行mack test的时候,卡在“t/lru-crawler.t ...... 93/189”,这个地方。
最终的结果

> t/lru-crawler.t    (Wstat: 13 Tests: 95 Failed: 0)
>   Non-zero wait status: 13
>   Parse errors: Bad plan.  You planned 189 tests but ran 95.
> Files=49, Tests=6983, 735 wallclock secs ( 1.96 usr  0.23 sys + 356.49
cusr 49.42 csys = 408.10 CPU)
> Result: FAIL
> make: *** [test] Error 1

如果有解决办法请告知,非常感谢!
4 楼 qindongliang1922 2014-04-02  
JavaCFW 写道
  项目在用

装成功了吧
3 楼 qindongliang1922 2014-04-02  
宋建勇 写道

2 楼 JavaCFW 2014-04-02  
  项目在用
1 楼 宋建勇 2014-03-25  

相关推荐

Global site tag (gtag.js) - Google Analytics