没有不值得去解决的问题,也没有不值得去学习的技术!

在 Laravel 6 中,缓存标记的实践与分析

运行程序以后,查看 GUI for Redis 中的数据结构。展开 tag 。cache:tag:theme_editor:key 的值为:s:22:"633146b13433b471207802";。其表示关联的 key 为:cache:633146b13433b471207802:standard_ref。这是标签:theme_editor 生成的结构。总计为 2 个 key
1、现在存储被打上标签的缓存数据,打上了 2 个标签:theme_editor、theme_editor_rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW


return Cache::tags([
		ThemePreviewInterface::TAG_THEME_EDITOR,
		ThemePreviewInterface::TAG_THEME_EDITOR . '_' . $sessionId]
	)
	->put(ThemePreviewInterface::THEME_EDITOR_SESSION_PREFIX . $sessionId, json_encode($data), ThemePreviewInterface::TTL);


2、运行程序以后,查看 GUI for Redis 中的数据结构。展开 tag 。cache:tag:theme_editor:key 的值为:s:22:”633146b13433b471207802″;。其表示关联的 key 为:cache:633146b13433b471207802:standard_ref。这是标签:theme_editor 生成的结构。总计为 2 个 key。如图1
运行程序以后,查看 GUI for Redis 中的数据结构。展开 tag 。cache:tag:theme_editor:key 的值为:s:22:"633146b13433b471207802";。其表示关联的 key 为:cache:633146b13433b471207802:standard_ref。这是标签:theme_editor 生成的结构。总计为 2 个 key
图1
3、运行程序以后,查看 GUI for Redis 中的数据结构。展开 tag 。cache:tag:theme_editor_rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW:key 的值为:s:22:”633146b134d67627586383″;。其表示关联的 key 为:cache:633146b134d67627586383:standard_ref。这是标签:theme_editor_rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW 生成的结构。总计为 2 个 key。如图2
运行程序以后,查看 GUI for Redis 中的数据结构。展开 tag 。cache:tag:theme_editor_rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW:key 的值为:s:22:"633146b134d67627586383";。其表示关联的 key 为:cache:633146b134d67627586383:standard_ref。这是标签:theme_editor_rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW 生成的结构。总计为 2 个 key
图2
4、2 个标签所关联的 key 的值列表是相同的,可得到对应的 key :cache:327d4fd2bc91588c8a5e4c7248cf680165a2e12a:theme_editor_session:rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW 。如图3
2 个标签所关联的 key 的值列表是相同的,可得到对应的 key :cache:327d4fd2bc91588c8a5e4c7248cf680165a2e12a:theme_editor_session:rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW
图3
5、决定删除 cache:327d4fd2bc91588c8a5e4c7248cf680165a2e12a:theme_editor_session:rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW 所对应的缓存数据。不使用 tags 方法。操作结果为 false ,表示删除失败。如图4
决定删除 cache:327d4fd2bc91588c8a5e4c7248cf680165a2e12a:theme_editor_session:rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW 所对应的缓存数据。不使用 tags 方法。操作结果为 false ,表示删除失败
图4


        $result = Cache::forget($sessionId);

        dd($result);


6、使用 tags 方法。操作结果为 true ,表示删除成功。如图5
使用 tags 方法。操作结果为 true ,表示删除成功
图5


        $result = Cache::tags(ThemePreviewInterface::TAG_THEME_EDITOR . '_' . $sessionId)->flush();

        dd($result);


7、查看 Redis 中的数据。cache:633146b13433b471207802:standard_ref 中的关联的 值列表中仍然有 1 条记录,未删除:cache:327d4fd2bc91588c8a5e4c7248cf680165a2e12a:theme_editor_session:rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW 。键 cache:633146b134d67627586383:standard_ref 已经被删除,之前其中的关联的 值列表中的 1 条记录所对应的 key 也已经被删除。符合预期。如图6
查看 Redis 中的数据。cache:633146b13433b471207802:standard_ref 中的关联的 值列表中仍然有 1 条记录,未删除:cache:327d4fd2bc91588c8a5e4c7248cf680165a2e12a:theme_editor_session:rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW 。键 cache:633146b134d67627586383:standard_ref 已经被删除,之前其中的关联的 值列表中的 1 条记录所对应的 key 也已经被删除。符合预期
图6

PHP / Laravel / Yii2 老项目维护与长期技术支持

如果你的 PHP / Laravel / Yii2 项目已经上线,但遇到原开发离职、Bug 长期无人修复、接口不稳定、性能下降、代码难以接手等问题,可以联系我做一次远程技术排查。

适合以下情况:
✅ 老旧 PHP 系统无人维护
✅ Laravel / Yii2 项目 Bug 修复
✅ 后台管理系统小功能迭代
✅ RESTful API 接口排查
✅ MySQL / Redis / Nginx 性能问题
✅ 长期远程兼职维护

可先从一次小问题开始:
✅ 线上报错排查
✅ 接口异常分析
✅ 慢查询与性能瓶颈定位
✅ 代码结构初步评估
✅ 部署环境与日志检查

如需咨询,请联系我,并注明:PHP 维护咨询

联系方式:
Telegram:@shuijingwan
微信:13980074657
邮箱:shuijingwanwq@gmail.com

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理