在 Laravel 6 中,缓存标记的实践与分析
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
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
4、2 个标签所关联的 key 的值列表是相同的,可得到对应的 key :cache:327d4fd2bc91588c8a5e4c7248cf680165a2e12a:theme_editor_session:rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW 。如图3
5、决定删除 cache:327d4fd2bc91588c8a5e4c7248cf680165a2e12a:theme_editor_session:rjxMAeCRpPuaD4LJlljDOMXb47hRdVTb2vPW 所对应的缓存数据。不使用 tags 方法。操作结果为 false ,表示删除失败。如图4
$result = Cache::forget($sessionId); dd($result);
6、使用 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
近期评论