如何替换Laravel应用缓存驱动?Redis配置后性能未提升求解
正确激活Laravel的Redis缓存驱动并验证性能提升
1. 安装Laravel所需的Redis依赖
只装Redis服务器还不够,Laravel需要PHP端的扩展或客户端来连接Redis:
- 安装PHP Redis扩展(推荐):执行
sudo apt install php-redis,然后重启PHP-FPM服务(比如sudo systemctl restart php8.2-fpm,根据你的PHP版本调整服务名)。 - 或者通过Composer安装Predis客户端:执行
composer require predis/predis。
2. 确认Laravel的Redis配置正确性
- 检查
.env文件,除了CACHE_DRIVER=redis,还要确保Redis连接参数正确:REDIS_HOST=127.0.0.1 REDIS_PASSWORD=null REDIS_PORT=6379 - 打开
config/cache.php,确认stores数组里的redis配置使用了正确的连接:
同时检查'redis' => [ 'driver' => 'redis', 'connection' => 'cache', ],config/database.php里的redis连接配置,确保cache连接的参数和.env一致。
3. 清除旧缓存并刷新配置
之前用file驱动的缓存会残留,需要清理并让Laravel加载新配置:
- 清除应用缓存:
php artisan cache:clear - 清除配置缓存(如果之前缓存过配置):
php artisan config:clear - 重启PHP-FPM服务:
sudo systemctl restart php-fpm(根据你的PHP版本调整服务名)
4. 验证Redis是否实际被使用
- 开启Redis监控:在终端执行
redis-cli monitor,保持窗口打开。 - 在浏览器访问Laravel应用页面,查看终端输出,如果出现
SET、GET等Redis命令,说明缓存已经生效。 - 手动测试缓存写入:在路由文件中添加测试路由:
访问该路由后,在终端执行Route::get('/test-redis', function () { \Illuminate\Support\Facades\Cache::put('test_cache', 'redis_working', 300); return \Illuminate\Support\Facades\Cache::get('test_cache'); });redis-cli GET test_cache,如果返回"redis_working",说明Redis连接正常。
5. 针对目标场景优化缓存策略
要实现跳转后返回页面加载更快,需要针对性缓存页面或数据:
- 首页页面缓存:Laravel 9及以上版本可以直接给路由添加缓存:
旧版本可以手动缓存视图内容:Route::get('/', function () { return view('welcome'); })->cache();Route::get('/', function () { return Cache::remember('home_page', 3600, function () { return view('welcome'); }); }); - 缓存数据库查询:比如首页的动态数据,缓存查询结果减少数据库请求:
$posts = Cache::remember('home_posts', 3600, function () { return App\Models\Post::latest()->take(10)->get(); });
内容的提问来源于stack exchange,提问作者rashenter
相关产品推荐
相关产品推荐

