Laravel 如何 "properly" 在 Redis 哈希中存储和检索模型

Laravel how to "properly" store & retrieve models in a Redis hash

我正在开发 Laravel 应用程序并开始使用 Redis 作为缓存系统。我正在考虑缓存我拥有的所有特定模型的数据,因为用户可能会经常提出 API 请求涉及该模型。一个有效的解决方案是将每个模型存储在一个散列中,其中字段是该记录的唯一 ID,而值只是唯一模型的数据,或者这个用例对于像 Redis 这样的简单键值数据库来说太复杂了吗?我也很好奇当我从哈希中检索所有数据时如何从哈希创建模型实例。感谢回复!

简短回答:是的,您可以在 Redis 的键值缓存中存储模型或集合,或基本上任何内容。只要提供的密钥是唯一的并且可以追溯。 Redis 甚至可以用作主数据库。

长答案

最终,我认为这取决于实施。在有人 can/should 考虑缓存 所有模型 之前,可以做很多优化。对于涉及大型数据集的“简单”记录,我建议首先优化您的查询和代码并检查结果。示例:

  1. Select只有您需要的数据,而不是整个模型。
  2. 使用 Database Query Builder for interacting with the database when targeting large records, rather than Eloquent(由于 Active Record 模式,Eloquent 显着变慢)。
  3. 考虑使用 toBase() 方法。这会检索所有数据但不会创建 Eloquent 模型,从而节省宝贵的资源。
  4. 使用 Laravel debugbar 等工具分析和发现潜在的长查询负载。

对于不经常更改或不再可能进行优化的大型数据集:缓存是必经之路!

这里没有正确答案,但也许这对您有所帮助!有很多 packages 实现了类似的行为。