PHP未安装Redis扩展,需在宝塔软件商店中进入对应PHP版本的设置→安装扩展→勾选redis,若提示已存在则检查php.ini中extension=redis.so是否启用,修改后必须重启PHP服务才能生效。
宝塔面板里装Redis,为什么
看不到
扩展?
不是Redis服务没启动,而是PHP本身没装
扩展——宝塔默认只装服务端,不自动编译PHP的客户端扩展。
实操建议:
立即学习
“
PHP免费学习笔记(深入)
”;
进宝塔「软件商店」→ 找到已安装的PHP版本 → 点击「设置」→「安装扩展」→ 勾选
(注意:不是
,两者扩展名不同)
如果勾选后提示“扩展已存在但未启用”,去
手动检查是否有
,没有就加上;有但被注释了就取消注释
改完必须重启PHP服务(宝塔界面点「重载配置」不够,要「重启」)
验证:运行
,有输出才真正生效;
里搜
才能看到模块信息
Memcached扩展装了却连不上,常见连接失败原因
或
,90%不是代码问题,是服务状态或权限没对上。
实操建议:
立即学习
“
PHP免费学习笔记(深入)
”;
先确认Memcached服务是否在运行:
;如果没启动,用宝塔「软件商店」里Memcached右侧的「启动」按钮,别直接
宝塔安装的Memcached默认监听
,但有些PHP代码写成
,在部分系统(尤其启用了IPv6的)会解析成
,导致连不上;统一改成
检查PHP的
扩展是否加载成功:
;注意扩展名是
(带d),不是
(旧版,已淘汰)
如果用的是
扩展(非
),它不支持SASL认证,而宝塔新版Memcached默认启用了SASL,必须关掉:
,把
里的
删掉,再重启服务
PHP里用Redis存session,
配错就白忙
光改
还不够,漏掉任一参数,登录态就存不住、取不出,表现为反复跳登录页或购物车清空。
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
实操建议:
立即学习
“
PHP免费学习笔记(深入)
”;
在
中设置:
注意
不能省略,默认db 0容易和业务缓存冲突;路径里不要加
,宝塔Redis默认无密码,加了反而报错
如果Redis开了密码(比如你手动改过
里的
),那
得写成:
改完必须重启PHP,且确保网站根目录的
里没用
覆盖掉全局配置(宝塔默认会生成该文件,有时会干扰)
验证方法:在PHP里执行
,然后进Redis命令行
,能查到key才算真正走通
Redis/Memcached共存时,怎么避免端口或内存打架?
宝塔默认Redis用6379、Memcached用11211,看似不冲突,但实际部署常因内存分配不合理导致一个吃光资源,另一个频繁OOM。
实操建议:
立即学习
“
PHP免费学习笔记(深入)
”;
进宝塔「软件商店」→ 分别点击Redis和Memcached → 「设置」→「配置修改」,重点调两处:
Redis:把
设为具体值,比如
(别写
,单位必须小写);同时确认
是
或
,别留空
Memcached:把
参数从默认
(MB)按需调高,比如
;别超过服务器总内存的25%
两个服务都启用后,用
或宝塔「监控」看内存占用,如果Redis长期占满、Memcached进程频繁消失,说明Redis的
没生效(常见于配置文件路径填错或没重启服务)
线上环境别让两者都存session——选一个就够了。Redis更稳,支持持久化和集群;Memcached更快但纯内存,宕机即丢session
配置缓存不是开个开关就完事,关键是每个环节的衔接点都要亲手验证一次:服务起来没、扩展加载没、连接通没、数据落盘没。少验一步,上线后就可能半夜收告警。
phpinfo()redisredisredismemcached/www/server/php/{版本号}/etc/php.iniextension=redis.sophp -m | grep redisphpinfo()redisConnection refusedFailed to connect to 127.0.0.1:11211systemctl status memcachedservice start127.0.0.1:11211localhost::1127.0.0.1memcachedphp -m | grep memcachedmemcachedmemcachememcachememcachedvim /etc/sysconfig/memcachedOPTIONS-Ssession.save_handler = redisphp.ini/www/server/php/{版本号}/etc/php.inisession.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379?database=1"database=1auth=xxx/www/server/redis/redis.confrequirepasssave_path"tcp://127.0.0.1:6379?auth=你的密码&database=1".user.inisession.save_handlersession_start(); $_SESSION['test'] = time();redis-cli -p 6379 -n 1 keys 'PHPSESSID*'maxmemory256mb256mmaxmemory-policyallkeys-lruvolatile-lru-m64-m 128htopmaxmemory