什么是Memcached?
Memcached是高性能的分布式内存缓存服务器,可以通过缓存数据库的查询结果,减少数据库访问次数,以提高动态web应用的速度和可扩展性。
为什么要用Memcached?
随着互联网的发展,传统的关系型数据库(如MySQL,Oracle)开始出现瓶颈,很多方面不能满足我们的要求。例如:
1:对数据库的高并发读写。
关系型数据库本身就是个庞然大物,处理过程非常复杂和耗时(如解析SQL语句,事务处理等),如果对关系型数据库进行高并发读写(每秒上万次的访问),那么关系型数据库是不能承受的。
2:对海量数据的处理了。
对于大型SNS网站,每天有上千万条的数据产生(如微博)。对于关系型数据库,如果在一个有上亿条数据的数据表中查找某条记录,效率会低的难以忍受。
使用Memcached能够很好的解决上述问题。由于Memcached的数据是保存在内存中的,这也是Memcached如此高效快速的原因。
怎样理解Memcached?
可以简单的理解成,Memcached相当于是一个只有两个字段的数据库
# | 名称 | 类型 |
---|---|---|
1 | key | varchar |
2 | value | text |
Memcached的特点
1。协议简单。
2。基于libevent的事件处理。
3。内置内存存储方式。
4。采用不互相通信的分布式。
Memcached的使用场景
1。非持久化存储:对数据存储要求不高
由于Memcached中的数据是保存在内存中的,服务器Done掉以后,数据就会被清空,要把Memcached当做缓存去使用,而不要把Memcached当做真正的数据库去使用。
2。分布式存储:不适合单机使用
Memcached对内存的消耗相当大,如果非要使用Memcached,建议将Memcached装到另外一台机器上,单独作用缓存系统,而不建议,将其与数据库装到一台服务器上。
3。key/value存储:格式简单,不支持List,Array数据格式。
Memcached的安装
Memcached的安装有两种方式:
1。编译安装,首先安装依赖库libevent,然后安装Memcached服务器
2。使用依赖管理工具,例如centos中的yum,Ubuntu中的apt-get
注意:Memcached是Memcache的升级版本,操作,速度以及稳定性都有了很大的提升。
1。去http://libevent.org/,下载安装依赖库libevent,安装方法如下所示:
wget https://github.com/libevent/libevent/releases/download/release-2.0.22-stable/libevent-2.0.22-stable.tar.gz
tar -zxvf libevent-2.0.22-stable.tar.gz
cd libevent-2.0.22-stable
./configure --prefix=/usr/local
make
sudo make install
2。libevent安装完毕,开始安装Memcached服务器(http://memcached.org/downloads),安装过程如下:
wget http://memcached.org/files/memcached-1.4.31.tar.gz
tar -zxvf memcached-1.4.31.tar.gz
./configure --prefix=/usr/local/memcached
make
sudo make install
3。Memcached安装完毕,使用以下命令启动Memcached服务器:
启动Memcached服务器
memcached -d -m 128 -u root -p 11211
启动服务时如果出现 error while loading shared libraries: libevent-2.0.so.5: cannot open shared object file: No such file or directory
>whereis libevent-2.0.so.5
libevent-2.0.so: /usr/local/lib/libevent-2.0.so.5
> ldd memcached
linux-gate.so.1 => (0x00c75000)
libevent-2.0.so.5 => not found (没有找到该文件)
librt.so.1 => /lib/librt.so.1 (0x001bd000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00a26000)
libc.so.6 => /lib/libc.so.6 (0x003b5000)
/lib/ld-linux.so.2 (0x0020d000)
> LD_DEBUG=libs ./memcached -v
找到默认路径 /usr/lib/
>sudo ln -s /usr/local/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5
既给现有的文件做个软连接过去
然后在尝试启动:
memcached -d -m 128 -u root -p 11211
查看Memcached是否启动成功
$ ps -ef | grep memcached
root 1724 1 0 16:14 ? 00:00:00 memcached -d -m 128 -u root -p 11211
root 1774 19804 0 16:15 pts/0 00:00:00 grep memcached
当然也可以用yum install memcached一条命令安装。
补充:
Memcached常用启动项及其描述:
选项 | 描述 |
---|---|
-d | 以守护程序(daemon)方式运行Memcached(指从终端窗口退出后程序仍可以进行) |
-m | 设置Memcached可以使用的内存大小,单位为MB |
-l | 设置监听的IP地址,如果是本机的话,通常不设置此参数 |
-p | 设置监听的端口,默认为11211,也可以不设置此参数 |
-u | 指定用户,如果当前为root,需要此参数指定用户 |
除了以上5个常用的启动项外,还有其他很多选项,通过以下命令可了解更多的启动项信息:
$ memcached -h