苹果CMS 如何开启Redis缓存?缓存配置?
照着做完,你能让苹果CMS V10 的缓存从「文件缓存」切到 Redis,页面和数据查询明显变快,并且知道怎么验证、怎么回滚。
第一步:确认 Redis 服务在跑
这一步的目标是确认服务器上已经装了 Redis 并且能响应,否则后面改完配置网站会直接报错打不开。
在 SSH 里执行:
redis-cli ping
返回 PONG 就说明服务正常。如果提示 command not found,说明 Redis 还没装。宝塔面板用户走:软件商店 → 搜索「Redis」→ 安装 → 安装完在「软件商店 → 已安装」里点 Redis 的「设置」,把「性能调整」保持默认即可。
注意:宝塔装的 Redis 默认
bind 127.0.0.1、requirepass为空。如果你的 Web 服务器和 Redis 不在同一台机器,需要改配置文件/www/server/redis/redis.conf里的bind和requirepass,改完systemctl restart redis,同时放行安全组 6379 端口。
第二步:给 PHP 装 redis 扩展
这一步的目标是让 PHP 能连 Redis。苹果CMS 走的是 ThinkPHP 5.1 的 redis 驱动,底层依赖 phpredis 扩展,不是靠 redis 命令行。
宝塔面板操作:软件商店 → 已安装 → 找到你网站正在用的 PHP 版本(比如 PHP 7.4)→ 点「设置」→ 左侧「安装扩展」→ 找到 redis → 点「安装」→ 装完回到「服务」页点「重启」。
命令行验证:
php -m | grep redis
能输出 redis 就成功了。没输出就说明扩展没装上,别急着改配置。
注意:苹果CMS V10 官方推荐 PHP 7.0~7.4,PHP 8.x 部分老版本模板和插件会报错。如果你用的是 PHP 8,先确认站点本身能正常打开再动缓存。
第三步:修改 cache 配置
这一步的目标是把缓存驱动从 File 换成 redis,做完后所有 Cache:: 调用都会走 Redis。
用编辑器打开网站根目录下的:
application/config.php
搜索 'cache',你会看到默认配置:
'cache' => [
'type' => 'File',
'path' => CACHE_PATH,
'prefix' => '',
'expire' => 0,
],
把整段替换为:
'cache' => [
'type' => 'redis',
'host' => '127.0.0.1',
'port' => 6379,
'password' => '',
'select' => 0,
'timeout' => 0,
'expire' => 0,
'persistent' => false,
'prefix' => 'maccms:',
],
参数说明:host 填 Redis 地址,password 有密码就填上(没有留空字符串),select 是第几个数据库(0~15),prefix 是键前缀。
注意:同一台 Redis 上如果跑着多个站点或多个项目,
prefix一定要改得各不相同,比如maccms_a:、maccms_b:,否则不同站点的缓存会互相覆盖,出现「首页显示别的站内容」这种诡异问题。
第四步:清掉旧缓存并验证
这一步的目标是避免旧的文件缓存和新的 Redis 缓存打架。
先删文件缓存目录,SSH 执行:
rm -rf runtime/cache/*
或者走后台:登录后台 → 左侧菜单「系统」→「缓存管理」→ 点「清除缓存」按钮。苹果CMS V10 后台没有缓存驱动的开关,这里只是清缓存的入口,换驱动还是靠第三步的配置文件。
然后刷新网站首页几次,再执行:
redis-cli
> select 0
> keys 'maccms:*'
能看到一堆键就说明生效了。看不到键的话,检查 select 的库号是否和你查询的一致,以及配置文件是否保存成功。
第五步:出问题怎么回滚
如果改完网站 502 或提示 connection refused,说明 PHP 连不上 Redis。最快的处理方式是把 application/config.php 里的 'type' => 'redis' 改回 'type' => 'File',同时把 'path' => CACHE_PATH, 加回去,再执行一次 rm -rf runtime/cache/*,网站立刻恢复。
注意:Redis 一旦挂掉,网站会直接打不开,不像文件缓存那样还能降级。生产环境建议给 Redis 配上
appendonly yes持久化,并加个进程监控(宝塔的「监控」或 systemd 自带的重启机制)。另外,苹果CMS 的采集模块、部分插件内部是写死用 File 缓存的,这部分流量不会走 Redis,属于正常现象。
小结
- Redis 生效的三个前提:Redis 服务在跑、PHP 装了 redis 扩展、
application/config.php里 cache 的 type 改成 redis。 - 关键参数是 host、port、password、select、prefix,多站点共用时必须区分 prefix。
- 改完配置一定要清
runtime/cache/和后台缓存,否则会读到旧数据。 - 验证方式是
redis-cli里keys 'maccms:*',看得到键才算成功。 - 出问题就把 type 改回 File,这是最稳的回滚方案。
原文链接:https://www.gj0.com/thread-43.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。