登录
首页 >  文章 >  php教程

LaravelRedis缓存配置与使用教程

时间:2026-05-06 22:49:17 307浏览 收藏

本文深入剖析了 Laravel 中 Redis 缓存从零配置到高可用落地的完整实践路径,不仅详解了安装 phpredis 扩展、同步修改 .env 与 config/cache.php 及 database.php 等易被忽视的关键步骤,更直击生产环境痛点:用 Cache::remember() 消除竞态条件、通过空值缓存+随机过期时间抵御穿透与雪崩、借助本地 APCu 减少网络开销,并强调缓存键设计、压测验证和运维监控等决定系统稳定性的“隐形细节”——帮你避开那些上线后才暴雷的坑。

Laravel框架Redis怎么用_Laravel框架缓存加速配置指南【操作】

Laravel 默认不启用 Redis 缓存,必须手动改配置、装扩展、验证连接,否则 Cache::get() 仍走 file 驱动,完全没效果。

确认 Redis 扩展已安装且被 PHP 加载

不装 phpredis 扩展,Laravel 会自动回退到 predis(纯 PHP 实现),性能差、不支持管道和部分原子操作,线上环境不推荐。

  • 运行 php -m | grep redis,看到 redis 表示扩展已加载
  • 若无输出,需用 pecl install redis 安装,并在 php.ini 中添加 extension=redis.so(Linux/macOS)或 extension=php_redis.dll(Windows)
  • 修改后重启 PHP-FPM 或 Apache,再执行 php --ri redis 查看版本和配置项

修改 config/cache.php.env 启用 Redis 驱动

只改 .env 不够,Laravel 7+ 起默认 cache.phpdefaultfile,必须显式指向 redis

  • .env 中设置:CACHE_DRIVER=redisREDIS_HOST=127.0.0.1REDIS_PORT=6379(如密码非空,加 REDIS_PASSWORD=xxx
  • config/cache.php 中确保 'default' => env('CACHE_DRIVER', 'redis'),且 'stores'['redis'] 下的 'connection' 值与 config/database.php 中 Redis 连接名一致(默认是 'default'
  • 别漏掉 config/database.phpredis 数组是否已配好 host/port —— Laravel 缓存底层实际调用的是这个连接

Cache::remember() 替代手写 if-else 读写逻辑

直接调 Cache::get() + Cache::put() 容易出竞态条件(cache miss 时多个请求同时查 DB 再写缓存),remember() 自动处理原子性。

  • 错误写法:$data = Cache::get('posts'); if (!$data) { $data = Post::all(); Cache::put('posts', $data, 3600); }
  • 正确写法:$data = Cache::remember('posts', 3600, function () { return Post::all(); });
  • 注意:闭包内不能用 $this,需用 use ($var) 显式传参;过期时间单位是秒,不是分钟
  • 对模型集合,建议用 Cache::remember('posts.'.$id, ...) 按 ID 分 key,避免单 key 过大拖慢 Redis

缓存穿透与雪崩必须主动防御

Laravel 缓存层本身不提供布隆过滤或互斥锁,高频场景下容易被击穿或集体过期导致 DB 崩溃。

  • 空值缓存:查不到数据时,Cache::put('post.9999', null, 60) 存个短时效空值,防止反复穿透
  • 随机过期时间:不要所有 key 都设 3600 秒,用 3600 + rand(0, 600) 错开过期峰
  • 本地缓存兜底:复杂业务可先查 apcu,命中则跳过 Redis,减少网络开销(需额外装 APCu 扩展)
  • 别依赖 Cache::add() 做锁 —— 它不是原子 setnx,高并发下可能失效;真要锁,用 Redis::lock()Cache::lock()(Laravel 8.0+)

真正卡住人的从来不是“怎么连上 Redis”,而是缓存键设计不合理、没防穿透、没压测过期洪峰——这些细节不提前想清楚,上线后查 slowlog 和 INFO memory 就晚了。

本篇关于《LaravelRedis缓存配置与使用教程》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>