Redis核心价值不限于高并发,更是支持共享状态、分布式锁、消息队列等的内存数据结构服务器,低并发多实例系统同样需要。

没有“更合适”的通用答案,只有匹配你当前项目规模、运维能力和业务需求的驱动。盲目上 Redis 可能反而增加部署负担,而用 file 驱动跑高并发 API 则大概率会卡死。
看并发量和数据一致性要求
低流量后台管理、本地开发调试,file 驱动完全够用,不用装额外服务,storage/framework/cache/data 目录写入即可;一旦日均请求超 5000,或需要多个 PHP-FPM 进程共享缓存(比如负载均衡后多台机器),file 就会因文件锁和 IO 竞争出问题。这时候必须换支持并发读写的驱动——redis 或 memcached。
如果业务强依赖缓存与数据库状态一致(例如订单状态变更后必须立刻失效对应缓存),database 驱动虽慢但能靠事务保证原子性;但注意它会把缓存压力转嫁给数据库,高峰期可能拖垮主库。
Redis 不是默认最优解,得看你会不会配
选 redis 前先确认三件事:
-
phpredis扩展已安装(比predis更快,且原生支持连接池) -
REDIS_HOST和REDIS_PORT在.env中指向真实可用实例(别漏掉REDIS_PASSWORD,生产环境必须设) -
config/cache.php里'redis'store 的'connection'名称要和config/database.php中定义的 Redis 连接名一致(常见坑:写成'default'但配置里叫'cache')
没做这三步,CACHE_DRIVER=redis 表面生效,实际请求全 fallback 到 array 驱动——也就是根本没缓存,你还以为是 Redis 慢。
别忽略 array 和 memcached 的适用场景
array 驱动不是摆设:单元测试时设 CACHE_DRIVER=array,能彻底隔离外部依赖,避免测试因 Redis 连接失败而挂掉;CI 流水线里也建议默认用它,除非你真在测缓存逻辑。
memcached 在纯 KV、超高吞吐场景下仍有优势——比如首页轮播图 URL 缓存,每秒几万次 GET,且从不需持久化。它的内存管理比 Redis 更轻量,单机吞吐常高出 15%~20%。但注意:memcached 不支持 Cache::tags(),也没列表/有序集合,复杂缓存策略直接不可用。
真正容易被忽略的点是:缓存驱动切换后,旧缓存不会自动清理。redis 改成 database,原来存在 Redis 里的键还在,但 Laravel 已经不认了——这些“幽灵缓存”既占资源又干扰监控。上线前务必手动清空旧存储,别指望 Laravel 自己处理。



















