Laravel 缓存进阶:用 remember、标签与缓存事件把失效策略做稳
test12026-10-2422 次阅读
缓存不是 set 一下就完事
新手常把所有数据无脑写进缓存,结果更新后页面还是旧的。Laravel 的缓存层提供 remember、标签分组、以及缓存事件,把"什么时候存、怎么批量失效、谁动了缓存"三件事讲清楚,才能既快又不出错。
用 remember 收敛"查缓存-查库-回写"
经典的缓存读取要写判断、回退、回写三段逻辑,remember 一行搞定,闭包只在 miss 时执行。
$posts = Cache::remember(
"hot_posts",
now()->addMinutes(10),
fn () => Post::with("author")->orderByDesc("views")->take(20)->get()
);
用标签给缓存分组,批量失效
用户维度、配置维度、报表维度各自打标签,改了用户数据时只清用户这组,不影响别的缓存。
Cache::tags(["user", "profile:{$id}"])->put("profile:{$id}", $data, 3600);
// 用户信息变更时一次性清空
Cache::tags(["profile:{$id}"])->flush();
监听缓存事件做旁路审计
开启事件后发现,哪些 key 被频繁穿透、哪些被意外清除,都能在监听器里记下来,方便定位缓存击穿。
protected $listen = [
\Illuminate\Cache\Events\CacheMissed::class => [
\App\Listeners\LogCacheMiss::class,
],
\Illuminate\Cache\Events\KeyForgotten::class => [
\App\Listeners\LogCacheForget::class,
],
];
缓存的难点从来不是写入,而是失效。把 remember、标签、事件三件套用熟,缓存才真正变成性能杠杆,而不是隐藏 bug 的温床。
T
test1
文章作者
缓存不是 set 一下就完事 新手常把所有数据无脑写进缓存,结果更新后页面还是旧的。Laravel 的缓存层提供 re...
- 分类
- 技术
- 发布时间
- 2026-10-24
- 字数
- 约 921 字
- 阅读
- 22 次
