laravel的cache门面可直接读写redis缓存,无需手动连接或序列化;需确保.env设cache_driver=redis、运行config:clear,并用cache::store('redis')->put/get验证连通性。

直接用 Laravel 的 Cache 门面就能完成 Redis 缓存的读写,无需手动连接或序列化——框架已自动处理底层通信、序列化和过期逻辑。
确认 Redis 驱动已启用
确保项目已正确切换到 Redis 缓存驱动,否则所有 Cache:: 调用仍走文件或数组驱动:
- 检查
.env文件中是否设置:CACHE_DRIVER=redis - 运行
php artisan config:clear清除配置缓存,让新配置生效 - 可临时执行
php artisan tinker验证:Cache::store('redis')->put('test', 'ok', 10); Cache::store('redis')->get('test')—— 返回"ok"即通
基础读写:键值存取最简写法
在控制器或服务中引入门面后,一行代码即可完成高频操作:
- 写入(带过期时间,单位为秒):
Cache::put('user_1001', ['name' => 'Alice', 'role' => 'admin'], 3600); - 读取(不存在时返回
null):$user = Cache::get('user_1001'); - 读取并设默认值(避免空判断):
$user = Cache::get('user_1001', ['name' => 'Guest']); - 存在性判断:
if (Cache::has('user_1001')) { ... } - 删除单个项:
Cache::forget('user_1001');
进阶控制:显式指定 store 与 TTL 精确管理
当项目同时使用多个缓存后端(如 Redis 存业务数据、Memcached 存会话),推荐显式调用 store,避免依赖全局 default 配置:
- 强制走 Redis(绕过
config/cache.php的 default 设置):Cache::store('redis')->put('flag', true, 60); - TTL 必须是整数秒,
5表示 5 秒后自动失效,不是分钟或毫秒 - 数组、对象、布尔值等 PHP 值可直接存取,Laravel 自动序列化/反序列化,无需手动
serialize()或json_encode()
调试与验证:快速定位是否真走 Redis
遇到缓存不生效、静默返回 null 时,优先跳过代码层,直连 Redis 验证:
- 终端执行:
redis-cli -h $(grep REDIS_HOST .env | cut -d= -f2) -p $(grep REDIS_PORT .env | cut -d= -f2) ping—— 应返回PONG - 查看当前所有 key 是否含目标键:
redis-cli KEYS "user_1001"(生产环境慎用KEYS *) - 若用 Docker,注意
REDIS_HOST不能填127.0.0.1(那是容器自身回环),应填宿主机 IP 或 Redis 容器名(如redis)











