Laravel配置Redis缓存仍调用数据库表问题求助
问题排查与修复方案
从错误栈可以看出,系统在检查维护模式状态时,依然使用了DatabaseStore而非Redis,这是核心问题。以下是具体修复步骤:
1. 修正config/cache.php的配置结构
你的cache.php里多了一个冗余的"driver"键,Laravel的缓存配置中,默认存储由default指定,而非直接定义driver,这个冗余配置会导致冲突。同时修正lock_connection的连接名称(需与config/database.php中存在的Redis连接名匹配):
<?php declare(strict_types=1); return [ 'default' => env('CACHE_STORE', 'redis'), 'stores' => [ 'redis' => [ 'driver' => 'redis', 'connection' => env('REDIS_CACHE_CONNECTION', 'cache'), // 改为database.php中已定义的Redis连接名,比如'default'或'cache' 'lock_connection' => env('REDIS_CACHE_LOCK_CONNECTION', 'default'), ], ], 'prefix' => env('CACHE_PREFIX', 'MYT') ];
2. 验证环境变量配置
确保.env文件中明确设置缓存相关变量,避免环境变量覆盖配置:
CACHE_STORE=redis REDIS_CACHE_CONNECTION=cache REDIS_CACHE_LOCK_CONNECTION=default
3. 清除配置缓存
Laravel会缓存配置文件,修改配置后必须清除缓存才能生效:
php artisan config:clear php artisan cache:clear
4. 确认Redis连接可用性
测试Redis连接是否正常,避免因Redis连接失败导致系统 fallback 到数据库缓存:
php artisan redis:cli # 进入Redis命令行后执行PING,返回PONG则连接正常
问题根源说明
错误栈中的Illuminate\Foundation\CacheBasedMaintenanceMode会使用默认缓存存储检查维护状态,而你的配置因冗余键、错误的锁连接名,或未清除配置缓存,导致系统未正确加载Redis缓存配置,转而使用了默认的数据库缓存驱动。
内容的提问来源于stack exchange,提问作者Simple Fellow
相关产品推荐
相关产品推荐

