Laravel安装GeneaLabs/laravel-model-caching后Redis连接拒绝求助
嘿,我来帮你捋捋怎么解决这个问题——你碰到的情况其实是 GeneaLabs/laravel-model-caching 包默认把 Redis 作为缓存驱动来用,哪怕你用 MySQL 做数据库,只要启用了模型缓存,就需要 Redis 服务正常跑起来,而且配置得没问题。咱们一步步排查:
1. 先确认本地 Redis 服务有没有启动
你收到的「No connection could be made because the target machine actively refused it」错误,十有八九是本地根本没运行 Redis 服务。因为你没用 Homestead,得自己手动装 Redis 并启动:
- Windows:去 Redis 官方下载适配 Windows 的版本,安装完成后,要么在系统服务列表里找到 Redis 服务,设置成自动启动并启动它;要么打开命令行,进入 Redis 安装目录,运行
redis-server.exe直接启动。 - Mac:用 Homebrew 安装的话,先执行
brew install redis,然后启动服务brew services start redis,这样开机也会自动启动。 - Linux:比如 Ubuntu 这类发行版,用
sudo apt install redis-server安装,然后启动sudo systemctl start redis,设置开机自启sudo systemctl enable redis。
启动之后,打开终端敲 redis-cli ping,如果返回 PONG,说明 Redis 服务已经正常运行了。
2. 检查 Laravel 的缓存配置是否正确
打开项目根目录的 .env 文件,确认以下几个配置项:
CACHE_DRIVER=redis REDIS_HOST=127.0.0.1 REDIS_PORT=6379 REDIS_PASSWORD= # 要是你的 Redis 设置了密码,就填在这里,没设置就留空
另外也可以看看 config/cache.php 里的 redis 配置块,确保和 .env 的值一致:
'redis' => [ 'driver' => 'redis', 'connection' => 'cache', ],
如果你的 Redis 用了非默认端口或者设置了密码,一定要对应修改这些配置。
3. 可选:不想折腾 Redis?换其他缓存驱动
要是你暂时不想搞 Redis,也可以把缓存驱动换成 Laravel 支持的其他类型,比如 file 或者 database:
- 换成 file 驱动:把
.env里的CACHE_DRIVER改成file就行,这个不需要额外配置,Laravel 会自动在storage/framework/cache/data目录生成缓存文件。 - 换成 database 驱动:把
.env里的CACHE_DRIVER改成database,然后跑两个迁移命令创建缓存表:php artisan cache:table php artisan migrate
这样模型缓存就会用数据库来存储,完全不需要 Redis 了。
4. 验证模型缓存是否正常工作
最后你可以测试下模型缓存有没有生效。比如确保你的模型里用了 GeneaLabs\LaravelModelCaching\Traits\Cachable trait,然后执行一个查询,检查缓存是否生成:
// 举个例子,假设你的 User 模型 $user = User::first(); // 查看对应缓存是否存在 dd(Cache::has('model:User:1'));
如果返回 true,说明缓存已经正常工作啦。
内容的提问来源于stack exchange,提问作者Ali Özen

