Laravel 9 中配置数据库缓存驱动需创建 cache 表、设 CACHE_DRIVER=database、确保数据库连接正常及权限充足,并通过 Cache::put/get 验证生效。

在 Laravel 9 中配置数据库缓存驱动,核心是让缓存数据写入数据库表而非文件或内存,适合已有数据库、无法部署 Redis/Memcached 的轻量级生产或过渡场景。它不是性能首选,但具备持久化和事务一致性优势。
创建 cache 表并运行迁移
数据库缓存依赖一张固定结构的 cache 表。Laravel 提供了开箱即用的迁移命令:
- 执行
php artisan cache:table—— 自动生成create_cache_table.php迁移文件 - 再运行
php artisan migrate将表建到数据库中
该表含三个字段:key(唯一索引)、value(TEXT)、expiration(INT),Laravel 自动管理过期逻辑。
启用 database 驱动并设为默认
修改 .env 文件,指定缓存驱动:
CACHE_DRIVER=database
同时确认 config/cache.php 中的 default 值已正确读取环境变量:
'default' => env('CACHE_DRIVER', 'file'),若此前运行过 php artisan config:cache,需先清缓存:php artisan config:clear 再重试。
验证连接与权限
database 驱动复用 config/database.php 中默认的数据库连接(通常是 mysql 或 pgsql)。确保:
- 应用能正常连接数据库(如
DB_CONNECTION=mysql可用) - 数据库用户对
cache表有SELECT、INSERT、UPDATE、DELETE权限 - 不需额外配置连接参数,除非你为缓存单独定义了连接(一般没必要)
测试缓存是否生效
在控制器或 Tinker 中快速验证:
use Illuminate\Support\Facades\Cache;
<p>Cache::put('test_db_cache', 'works!', 60);
dd(Cache::get('test_db_cache')); // 应输出 'works!'还可直接查数据库:SELECT * FROM cache WHERE `key` = 'test_db_cache';,确认记录存在且 expiration 值合理(Unix 时间戳格式)。



















