php - 如何在laravel中缓存函数的结果
问题描述
我想知道是否可以为每个可能的结果将函数的结果存储在缓存中。
这不是下面的确切示例,实际示例要复杂得多,出于速度原因,我需要缓存结果,但这让您了解我要完成的工作
例如,我有一个检索用户评论的函数:
public function getUserComments(User $user)
{
$comments = DB::table('comments')->where('user_id',$user->id)->get();
return $comments;
}
我需要为我的系统中的每个用户保存所有可能的结果。
例如,如果我有 100 个用户:
foreach ($users as $user) {
$cachedResults [] = $user->getUserComments();
}
现在我有了更快浏览的缓存结果:$cachedResults
解决方案
我同意斯蒂芬的回答,您可以使用特定键保存值,或者您可以使用标签,例如:
Cache::tags(['users', $name])->remember('model', 60, function () {
// [...]
});
我更喜欢第二种方法,因为如果您对数据库进行一些更改,它很容易管理......
例如,您可以使用['users', $name]
标签来存储引用特定用户的多个键,例如comments
关系。
当您对用户模型进行更改时,您只会['users', $name]
使用“模型”键刷新标签。
如果您删除用户,您将刷新['users', $name]
标签,如果您执行批量删除,您将刷新users
标签以清除缓存中存储的所有用户。
当然,您必须使用允许标签的缓存驱动程序。
推荐阅读
- c# - 在 C#/VB 中使用 ImageMagick 将注释水平居中但垂直设置位置
- timer - STM32L0 访问 GPIO 的 DMA 限制
- java - 子更改时如何更新根实体上的 modified_at 列?
- amazon-web-services - 删除 S3 存储桶
- python - tensorflow VGG16 网络精度和损失不会改变
- excel - 范围和列迭代的基本复制循环问题
- java - 如何通过改造发送带有键值对的数组数组
- git - 无法从私有 GitLab 存储库(命名空间)中作曲安装/要求
- javascript - 错误:“无法读取未定义的属性 'nodename'” 转换 html 表时
- android - 当应用程序从横向相机返回时,找不到片段构造函数