【发布时间】:2016-09-04 17:43:36
【问题描述】:
所以在 Laravel 5.1 中,我有两个 Eloquent 模型:
\App\Model\Product
\App\Model\Brand
品牌和产品之间存在一对多的关系(即一个品牌可能有多个产品)。在我们的系统中,每次我们想要检索一个产品的雄辩模型时,我们都会急切地加载品牌,如下所示:
$product = \App\Model\Product::whereId({integer})->with('brand')->first();
我们不希望产品经常变化,所以为了减少数据库查询和提高性能,我们想用 Redis 缓存这些 Product 模型,这样在我们执行数据库查询之前,我们会检查 Product 实例是否已经存储在缓存中。所以我的问题是,从 Redis 存储和检索这些产品实例的最佳方法是什么?
我知道我们可以通过以下方式将 eloquent 模型转换为 JSON:
$json = $product->toJson();
从技术上讲,这将允许我将“字符串化”模型存储在 Redis 中。但是,我将如何做相反的事情 - 将存储的 JSON 转换回 Product 实例(也具有预先加载的 Brand 关系),我可以在代码中将其用作普通模型实例?
此外,为了减少 Redis 操作,这必须与 MGET 一起使用,允许我一次检索多个实例。流水线获取操作也是可以接受的。
这是否可行,或者,有更好的方法来实现吗?
提前谢谢你。
【问题讨论】:
标签: php laravel caching redis eloquent