Laravel 5.6中的Redis数据库缓存

时间:2019-06-15 09:52:52

标签: database laravel caching redis

我想缓存查询结果,并且在laravel中阅读了有关Cache :: remember的信息,但是它需要一个时间参数,并且我不想为我的Redis缓存设置时间。

我需要一些东西来缓存我的查询,并且查询更新后,由于更新而更改的结果。

您有什么建议?

2 个答案:

答案 0 :(得分:1)

在redis中存储完整的口才模型可能比预期的慢。

在我的情况下,我必须创建包含大量wherecountjoingroup byorder by ...等的嵌套选择。

它在每次请求时都消耗了大量资源,因此我尝试缓存结果。这不是最好的解决方案,因为它比我想要的(200毫秒以上的响应)慢(4倍)。

解决方案是通过“巨大”查询SELECT id FROM ...,并将ID存储在Redis中。此后,每个请求中的SQL查询看起来像SELECT * FROM <table> WHERE id IN (...);。 (如有必要,对sql查询中的数据重新排序)

通过这种方式,可以快速查询redis和sql所需的数据。平均响应时间小于50毫秒。

我希望这会有所帮助。

答案 1 :(得分:0)

有一个很好的库,但是他们警告说它仅与laravel 5.8兼容。如果可以更新,这是一种方法。如果无法更新laravel,至少您可以阅读代码并尝试遵循相同的方向。

https://github.com/GeneaLabs/laravel-model-caching

此库完全满足您的需求。您可以缓存模型和/或自定义查询,并且每当更新,创建或删除模型时,都可以使该缓存无效。