前言简介
Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。
Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。
本质上,它是一个简洁的key-value存储系统。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。

Memcached 官网:memcached.org
Linux libevent库安装
Memcached 支持许多平台:Linux、FreeBSD、Solaris、Mac OS,也可以安装在Windows上。
Linux系统安装memcached,首先要先安装libevent库。
sudo apt-get install libevent ibevent-dev //自动下载安装(Ubuntu/Debian)
yum install libevent libevent-devel //自动下载安装(Redhat/Fedora/Centos)
Linux下自动安装Memcached
Ubuntu/Debian
sudo apt-get install memcached
Redhat/Fedora/Centos
yum install memcached
FreeBSD
portmaster databases/memcached
Linux下源代码安装Memcached
从其官方网站(http://memcached.org)下载memcached最新版本。
wget http://memcached.org/latest //下载最新版本
tar -zxvf memcached-1.x.x.tar.gz //解压源码
cd memcached-1.x.x //进入目录
./configure --prefix=/usr/local/memcached //配置
make && make test //编译
sudo make install //安装
Linux下Memcached 运行
Memcached命令的运行:
$ /usr/local/memcached/bin/memcached -h //命令帮助
注意:如果使用自动安装 memcached 命令位于 /usr/local/bin/memcached。
启动选项:
- -d是启动一个守护进程;
- -m是分配给Memcache使用的内存数量,单位是MB;
- -u是运行Memcache的用户;
- -l是监听的服务器IP地址,可以有多个地址;
- -p是设置Memcache监听的端口,,最好是1024以上的端口;
- -c是最大运行的并发连接数,默认是1024;
- -P是设置保存Memcache的pid文件。
作为前台程序运行:
从终端输入以下命令,启动memcached:
/usr/local/memcached/bin/memcached -p 11211 -m 64m -vv
slab class 1: chunk size 88 perslab 11915
slab class 2: chunk size 112 perslab 9362
slab class 3: chunk size 144 perslab 7281
//中间省略
slab class 38: chunk size 391224 perslab 2
slab class 39: chunk size 489032 perslab 2
<23 server listening
<24 send buffer was 110592, now 268435456
<24 server listening (udp)
<24 server listening (udp)
<24 server listening (udp)
<24 server listening (udp)
这里显示了调试信息。这样就在前台启动了memcached,监听TCP端口11211,最大内存使用量为64M。调试信息的内容大部分是关于存储的信息。
作为后台服务程序运行:
# /usr/local/memcached/bin/memcached -p 11211 -m 64m -d
或者
/usr/local/memcached/bin/memcached -d -m 64M -u root -l 192.168.0.200 -p 11211 -c 256 -P /tmp/memcached.pid
Windows下安装 Memcached
官网上并未提供 Memcached 的 Windows 平台安装包,我们可以使用以下链接来下载,你需要根据自己的系统平台及需要的版本号点击对应的链接下载即可:
- 32位系统 1.2.5版本:http://static.runoob.com/download/memcached-1.2.5-win32-bin.zip
- 32位系统 1.2.6版本:http://static.runoob.com/download/memcached-1.2.6-win32-bin.zip
- 32位系统 1.4.4版本:http://static.runoob.com/download/memcached-win32-1.4.4-14.zip
- 64位系统 1.4.4版本:http://static.runoob.com/download/memcached-win64-1.4.4-14.zip
- 32位系统 1.4.5版本:http://static.runoob.com/download/memcached-1.4.5-x86.zip
- 64位系统 1.4.5版本:http://static.runoob.com/download/memcached-1.4.5-amd64.zip
在 1.4.5 版本以前 memcached 可以作为一个服务安装,而在 1.4.5 及之后的版本删除了该功能。因此我们以下介绍两个不同版本 1.4.4 及 1.4.5的不同安装方法。
Windows下安装 Memcached 低于1.4.5 版本
1、解压下载的安装包到指定目录。
2、在 1.4.5 版本以前 memcached 可以作为一个服务安装,使用管理员权限运行以下命令:
c:\memcached\memcached.exe -d install
注意:你需要使用真实的路径替代 c:\memcached\memcached.exe。
3、然后我们可以使用以下命令来启动和关闭 memcached 服务:
c:\memcached\memcached.exe -d start
c:\memcached\memcached.exe -d stop
4、如果要修改 memcached 的配置项, 可以在命令行中执行 regedit.exe 命令打开注册表并找到 “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached” 来进行修改。
如果要提供 memcached 使用的缓存配置 可以修改 ImagePath 为:
"c:\memcached\memcached.exe" -d runservice -m 512
-m 512 意思是设置 memcached 最大的缓存配置为512M。
此外我们还可以通过使用 “c:\memcached\memcached.exe -h” 命令查看更多的参数配置。
5、如果我们需要卸载 memcached ,可以使用以下命令:
c:\memcached\memcached.exe -d uninstall
Windows下安装 Memcached高于1.4.5 版本
包括1.4.5版本也是按此方法步骤安装
1、解压下载的安装包到指定目录。
2、在 memcached1.4.5 版本之后,memcached 不能作为服务来运行,需要使用任务计划中来开启一个普通的进程,在 window 启动时设置 memcached自动执行(所以为了省事可以直接装1.4.4版本)。
我们使用管理员身份执行以下命令将 memcached 添加来任务计划表中:
schtasks /create /sc onstart /tn memcached /tr "'c:\memcached\memcached.exe' -m 512"
注意:你需要使用真实的路径替代 c:\memcached\memcached.exe。
注意:-m 512 意思是设置 memcached 最大的缓存配置为512M。
注意:我们可以通过使用 “c:\memcached\memcached.exe -h” 命令查看更多的参数配置。
3、如果需要删除 memcached 的任务计划可以执行以下命令:
schtasks /delete /tn memcached
PHP Memcache 扩展安装
在前面我们已经介绍了如何在系统中安装 Memcached 服务,接下来我们为大家介绍 PHP 如何使用 Memcached 服务。
Win服务器下PHP Memcache扩展dll文件可以在此Github地址 https://github.com/nono303/PHP7-memcache-dll ,按自己的系统环境和PHP版本下载后,存放在php程序的ext文件夹。 然后再php.ini中加入代码,开启memcache扩展模块 :
extension=php-7.3.x_memcache.dll
//文件名自行修改
PHP Memcache 扩展包下载地址:http://pecl.php.net/package/memcache,windows系统请仔细浏览选择对应您PHP版本的扩展包进行下载。Linux系统下你可以下载最新稳定包(stable),代码如下:
wget http://pecl.php.net/get/memcache-2.2.7.tgz
tar -zxvf memcache-2.2.7.tgz
cd memcache-2.2.7
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
注意:/usr/local/php/ 为php的安装路径,需要根据你安装的实际目录调整。
安装成功后会显示你的memcache.so扩展的位置,比如我的:
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/
最后我们需要把这个扩展添加到php中,打开你的php.ini文件在最后添加以下内容:
[Memcache]
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"
extension = memcache.so
添加完后 重新启动php,我使用的是nginx+php-fpm进程所以命令如下:
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
如果是apache的使用以下命令:
/usr/local/apache2/bin/apachectl restart
检查安装结果
/usr/local/php/bin/php -m | grep memcache
安装成功会输出:memcache。
或者通过浏览器访问 phpinfo() 函数来查看,如下图:

PHP 连接 Memcached
<?php
$memcache = new Memcache; //创建一个memcache对象
$memcache->connect('localhost', 11211) or die ("Could not connect"); //连接Memcached服务器
$memcache->set('key', 'test'); //设置一个变量到内存中,名称是key 值是test
$get_value = $memcache->get('key'); //从内存中取出key的值
echo $get_value;
?>
更多 PHP 操作 Memcached 请参阅: http://php.net/manual/zh/book.memcache.php