Laravel 8需通过.env设置CACHE_DRIVER=file(开发)或redis(生产),同步配置APP_ENV,执行config:clear与config:cache,并为Redis缓存配置专用database及连接,最后用tinker和redis-cli实测验证驱动与写入。

您需要在 Laravel 8 应用中根据部署环境自动启用 file 驱动(开发)或 redis 驱动(生产),避免手动改配置、防止缓存失效或连接报错,同时确保不同环境的缓存行为完全隔离且可验证。
设置环境变量控制缓存驱动
第一步:打开项目根目录下的 .env 文件,确认存在且仅存在以下三行关键配置:
CACHE_DRIVER=redis
APP_ENV=production
APP_DEBUG=false
第二步:本地开发时,将 .env 中的 CACHE_DRIVER 改为 file,APP_ENV 改为 local;【必须同步修改 APP_ENV,否则 Laravel 不会加载 production 专属优化逻辑】
第三步:保存后执行 php artisan config:clear && php artisan config:cache —— 这一步不可跳过,否则旧配置仍驻留在 bootstrap/cache/config.php 中,新环境变量不会生效。
配置 Redis 连接并绑定专用数据库
本地开发不用配 Redis,但生产环境必须显式隔离缓存空间,防止与 session 或 queue 的 key 冲突。
方法一:在 config/database.php 的 'redis' → 'connections' 下新增 cache 连接:
'cache' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => (int) env('REDIS_CACHE_DB', 1),
],
方法二:修改 config/cache.php 中 redis store 的 connection 值为 'cache',而非默认的 'default';【若仍用 default,可能意外清空 session 数据库】
方法三:在 .env 中补充 REDIS_CACHE_DB=1,并确保该值与 config/database.php 中 database 字段一致——Redis 不允许跨 DB 原子操作,错配会导致 put() 成功但 get() 返回 null。
验证缓存驱动是否真实生效
第一步:进入 Tinker 环境:php artisan tinker
第二步:执行以下命令链 → 检查当前驱动类型 → 写入测试键 → 读取验证:
config('cache.default') → 应返回 'redis'(生产)或 'file'(本地)Cache::put('env_test', 'ok', 60)Cache::get('env_test') → 必须返回 'ok'
第三步:若使用 Redis,额外运行 redis-cli -n 1 keys "*env_test*" —— 只有返回非空结果,才说明真正写入了指定 database,而不是默认的 db 0。
第四步:切换回本地环境后,检查 storage/framework/cache/data/ 目录下是否生成新文件,且无 Redis 连接异常日志。



















