应优先弃用 database 缓存驱动,改用 Redis;若坚持使用,需确认表结构兼容、更新配置并清空缓存。Laravel 10 未移除 database 驱动但已边缘化,因其性能差、不支持原子操作且官方不再主推。

升级 Laravel 9 的数据库缓存配置到 Laravel 10,重点不在“改配置”,而在于确认是否真该用 database 驱动,以及如何安全适配 Laravel 10 的缓存机制变化。Laravel 10 本身对 database 缓存驱动没有语法移除,但它在性能、可靠性与官方推荐度上已明显边缘化——多数升级问题其实源于误用或未清理旧缓存残留。
先判断:你真的需要 database 缓存吗?
Laravel 10 仍支持 database 驱动(通过 cache.table 配置表),但它的定位已是调试辅助工具,而非生产方案:
- 每次读写都触发一次数据库查询,高并发下会成为瓶颈
- 不支持原子操作(如
Lock::get())、TTL 精确控制弱于 Redis - Laravel 10 的
config/cache.php中,database配置项默认被注释,官方文档也不再主推
如果你当前用 database 是为了本地开发调试,可保留;若用于预发布/类生产环境,建议直接切换为 redis 或 memcached。
如果坚持用 database 驱动:三步确保可用
只需做三件事,无需重写逻辑:
-
确认缓存表结构兼容:运行
php artisan cache:table生成迁移文件(Laravel 10 默认使用cache表名),检查字段是否含key(VARCHAR 255)、value(TEXT)、expiration(INT)——若原表是 Laravel 6/7/8 时代创建的,可能缺created_at或索引,需手动补全 -
更新 .env 和 config/cache.php:
CACHE_DRIVER=database
并在config/cache.php的'stores' => ['database' => [...]]中核对'connection'(如mysql)和'table'(默认cache)是否匹配 -
清空所有缓存层:执行以下四条命令,避免旧配置残留干扰
php artisan cache:clearphp artisan config:clearphp artisan route:clearphp artisan view:clear
更推荐的做法:顺手升级到 Redis 缓存
用 Redis 不仅性能跃升,还能规避 database 驱动的所有隐患。Laravel 10 对 Redis 支持更成熟:
- 确保 Redis 服务运行(如
redis-server),并安装 PHP 扩展ext-redis - .env 中设置:
CACHE_DRIVER=redisREDIS_HOST=127.0.0.1REDIS_PORT=6379REDIS_PASSWORD=null - 验证是否生效:
php artisan tinker→Cache::put('test', 'ok', 60)→Cache::get('test')应返回"ok"
无需修改业务代码,所有 Cache::get()、Cache::remember() 等调用自动走 Redis。


















