安装memcache_安装教程,如何正确安装memcache?
成功安装Memcache并使其稳定运行的核心在于:必须严格区分Memcached服务端与PHP客户端扩展,并确保系统环境依赖库的完整性与版本匹配。整个安装过程实际上是一个“先搭建服务守护进程,后配置语言解析接口”的双向部署过程,任何一端的缺失或配置错误都会导致缓存服务不可用,对于追求高性能的Web应用而言,Memcache作为内存对象缓存系统,能够显著减轻数据库负载,其安装质量直接决定了后期的缓存命中率和响应速度。
环境准备与依赖库部署
在执行具体的{安装memcache_安装}操作前,构建一个纯净且依赖完备的运行环境是首要前提,Memcache的核心依赖于libevent库,这是一个异步事件通知库,若系统缺失该组件,服务端将无法正常编译或启动。
-
系统环境更新
建议在安装前更新系统软件包列表,确保获取最新的安全补丁,对于CentOS系统,执行yumupdate;对于Ubuntu/Debian系统,执行apt-getupdate。 -
安装Libevent依赖
Libevent是Memcached运行的基石。- 对于CentOS/RHEL系,执行:
yuminstalllibeventlibevent-devel-y。 - 对于Ubuntu/Debian系,执行:
apt-getinstalllibevent-dev-y。
务必确认devel开发包已安装,否则在编译源码时会报错。
- 对于CentOS/RHEL系,执行:
-
检查编译工具
确保系统安装了gcc、make等编译工具,执行yumgroupinstall"DevelopmentTools"-y可以一次性解决编译环境缺失问题。
Memcached服务端安装与启动
服务端是真正存储缓存数据的“容器”,这是安装流程中的核心组件,生产环境建议采用源码编译安装,以便进行定制化参数配置。
-
获取源码包
从官方网站下载稳定版本的Memcached源码包(如memcached-1.6.x.tar.gz),使用wget命令下载后,通过tar-zxvf命令解压。 -
编译与安装
进入解压后的目录,执行标准的“三步走”编译流程:./configure--prefix=/usr/local/memcached:指定安装路径,便于后续管理。make:编译源代码。makeinstall:将编译好的二进制文件安装到系统目录。
-
启动Memcached服务
安装完成后,需要手动启动守护进程,一个专业的启动命令示例如下:/usr/local/memcached/bin/memcached-d-m1024-uroot-p11211-c1024-P/tmp/memcached.pid- -d:以守护进程(后台)模式运行。
- -m:分配1024MB内存给缓存使用。
- -p:指定监听端口,默认为11211。
- -u:指定运行用户,建议使用非root用户以提升安全性。
启动后,可通过
ps-efgrepmemcached命令验证进程是否存在。这是确认服务端安装成功的唯一标准。
PHP客户端扩展配置
仅有服务端是无法让PHP代码调用缓存的,必须安装PHP的Memcache扩展,这里存在一个常见的技术误区:PHP有两个扩展,分别是memcache(旧版,不再维护)和memcached(新版,功能更强)。强烈建议安装memcached扩展,因为它支持更多高级特性如CAS操作。
-
安装扩展依赖
memcached扩展依赖于libmemcached库,需先安装该库:yuminstalllibmemcachedlibmemcached-devel-y -
编译PHP扩展
使用phpize命令动态编译扩展。- 下载扩展源码并解压。
- 在目录中执行
phpize。 - 执行
./configure--with-php-config=/path/to/php-config--disable-memcached-sasl(关闭SASL认证可避免部分连接错误)。 - 执行
make&&makeinstall。
-
修改php.ini配置
编译成功后,需在php.ini文件中添加扩展引用。- 添加行:
extension=memcached.so。 - 保存后,重启PHP-FPM服务(如
systemctlrestartphp-fpm)。
- 添加行:
-
验证安装结果
创建一个PHP测试页面,访问该页面并搜索“memcached”,若能看到Memcached的版本号及配置信息,则证明客户端与服务端已成功打通。
常见问题排查与优化建议
在完成了基础的{安装memcache_安装}流程后,生产环境的稳定性往往取决于细节配置。
-
防火墙端口放行
Memcached默认监听11211端口,若Web服务器与缓存服务器分离部署,必须在防火墙中放行该端口。- 执行:
firewall-cmd--zone=public--add-port=11211/tcp--permanent。 - 执行:
firewall-cmd--reload。
切记不要将端口暴露在公网,应严格限制来源IP,防止未授权访问导致数据泄露。
- 执行:
-
内存分配策略优化
Memcached采用SlabAllocation机制管理内存,启动时可通过-f参数调整GrowthFactor(增长因子),以减少内存碎片,如果缓存对象大小差异较大,建议将因子设置为1.25或更高,以优化内存利用率。 -
监控与日志
默认情况下Memcached不记录详细日志,建议通过-vv参数启动(仅用于调试)或使用第三方监控工具(如MemAdmin、Prometheusexporter)实时监控缓存命中率。高命中率是安装配置成功的最终验证指标。
相关问答
安装完成后,PHP连接Memcached提示“Connectionrefused”怎么办?
解答:这通常由两个原因导致,检查Memcached服务端是否正常启动,使用netstat-lntpgrep11211查看端口是否被监听,检查防火墙设置,确保PHP所在的服务器IP被允许访问Memcached服务器的11211端口,若服务端启动时绑定了特定的IP(如内网IP),需确保连接地址配置正确,而非使用localhost。
Memcached和Memcache扩展有什么区别,安装时应该选哪个?
解答:Memcache是PHP早期的扩展,不支持二进制协议,功能较少且已停止维护;Memcached是新版扩展,基于libmemcached开发,支持二进制协议、延迟删除、CAS令牌等高级功能。在安装时,应毫不犹豫地选择Memcached扩展,这能提供更好的性能和更丰富的API支持,避免在高并发场景下出现数据一致性问题。
如果您在安装过程中遇到了其他棘手的问题,或者有独到的优化参数配置经验,欢迎在评论区留言交流。