Laravel如何配置和使用缓存?(Redis代码示例)

发布时间 - 2025-12-17 00:00:00    点击率:
Laravel中配置Redis缓存需正确设置.env参数并运行config:clear;使用Cache门面可执行存取、判断与删除操作;标签功能通过key前缀模拟,需启用taggable配置;调试时可用redis-cli或Redis门面验证连接与数据。

在 Laravel 中配置和使用 Redis 缓存很简单,关键是正确设置驱动、连接参数,并用好 Cache 门面或辅助函数。

配置 Redis 缓存驱动

确保 .env 文件中已启用 Redis 并填写正确参数:

CACHE_DRIVER=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
REDIS_DB=0

然后运行 php artisan config:clear 清除配置缓存,让新配置生效。

Laravel 默认会读取 config/database.php 中的 redis 配置,并自动用于 cache 驱动。无需额外修改 cache 配置文件,除非你用多个 Redis 实例(比如缓存和 session 分开)。

基础缓存操作(Redis 示例)

使用 Cache 门面即可,Laravel 自动走 Redis:

  • 存数据:指定键、值和过期时间(秒)
use Illuminate\Support\Facades\Cache;

Cache::put('user_123', ['name' => 'Tom', 'role' => 'admin'], 3600); // 存 1 小时
  • 取数据:不存在返回 null,也可设默认值
$user = Cache::get('user_123');
// 或带默认值
$user = Cache::get('user_123', ['name' => 'Guest']);
  • 判断是否存在 & 删除
if (Cache::has('user_123')) {
    Cache::forget('user_123');
}

高级用法:缓存标签与前缀(Redis 不原生支持标签)

注意:Redis 本身不支持“标签(tags)”,但 Laravel 通过序列化 key + 前缀模拟实现。需开启 cache.tags 配置并使用 Redis 连接池(推荐 Laravel 9+):

  • config/cache.php 中确认 'stores.redis.taggable' => true 已启用(Laravel 10 默认开启)
  • 使用示例:
Cache::tags(['users', 'admins'])->put('profile_123', $data, 3600);
Cache::tags(['users'])->flush(); // 清空所有带 users 标签的项

⚠️ 注意:tag 操作在 Redis 中会产生额外 key(如 tags:users:ids),生产环境建议压测验证性能影响。

调试与验证 Redis 是否生效

快速确认缓存是否走 Redis:

  • 用 Redis CLI 查看:执行 redis-cli KEYS "*" | grep user_123
  • 在代码中临时加日志:
\Redis::connection()->set('test_key', 'from_php');
dd(\Redis::connection()->get('test_key')); // 应输出 'from_php'

如果报错连接失败,检查 REDIS_HOST、防火墙、Redis 服务状态;如果值为空,可能是 DB 编号不对或密码未设(REDIS_PASSWORD=null 表示无密码,不是字符串 "null")。

基本上就这些。Redis 缓存配置不复杂但容易忽略 .env 和 config:clear 步骤,写完记得验证一下实际存到哪了。


# php  # word  # laravel  # redis  # cad  # 防火墙  # session  # 配置文件  # red  # NULL 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在IIS中新建站点并配置端口与物理路径?  如何在景安服务器上快速搭建个人网站?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  EditPlus中的正则表达式实战(5)  使用spring连接及操作mongodb3.0实例  昵图网官方站入口 昵图网素材图库官网入口  Laravel如何实现一对一模型关联?(Eloquent示例)  Laravel如何使用withoutEvents方法临时禁用模型事件  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  如何在香港服务器上快速搭建免备案网站?  海南网站制作公司有哪些,海口网是哪家的?  深圳网站制作的公司有哪些,dido官方网站?  教你用AI将一段旋律扩展成一首完整的曲子  如何实现建站之星域名转发设置?  如何用虚拟主机快速搭建网站?详细步骤解析  桂林网站制作公司有哪些,桂林马拉松怎么报名?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  简单实现jsp分页  如何在腾讯云服务器上快速搭建个人网站?  如何在万网ECS上快速搭建专属网站?  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  如何在建站之星绑定自定义域名?  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  浅述节点的创建及常见功能的实现  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  教学论文网站制作软件有哪些,写论文用什么软件 ?  Laravel如何使用Blade模板引擎?(完整语法和示例)  Python图片处理进阶教程_Pillow滤镜与图像增强  百度输入法ai组件怎么删除 百度输入法ai组件移除工具  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  5种Android数据存储方式汇总  在线制作视频网站免费,都有哪些好的动漫网站?  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  jQuery 常见小例汇总  Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)  如何解决hover在ie6中的兼容性问题  如何正确选择百度移动适配建站域名?  Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】  微信小程序制作网站有哪些,微信小程序需要做网站吗?  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  利用JavaScript实现拖拽改变元素大小  如何快速登录WAP自助建站平台?