Laravel数据库缓存:雄辩地使用大量RAM而不是DB外观

9cbw7uwe  于 2023-03-19  发布在  其他
关注(0)|答案(2)|浏览(123)

我想缓存整个表,
当我使用雄辩时,它使用大量的RAM来创建或获取缓存的结果。

$users = Cache::remember('cache_with_eloquent', 60 * 5, function () {
       return User::all();
});

128MB使用的内存

他们相同的代码,但我使用的是DB外观而不是雄辩。它只使用44MB

$users = Cache::remember('cache_with_db_facade', 60 * 5, function () {
       return DB::table('users')->get()
});

有人能解释一下其中的区别吗?

8zzbczxx

8zzbczxx1#

两者都有相同的SQL查询,
但是这个return User::all();return User::get();将运行与模型相关的功能,即属性转换、数据转换等。
而构建器return DB::table('users')->get();将直接输出结果,无论SQL向其抛出什么。

pwuypxnk

pwuypxnk2#

Eloquent提供面向对象的接口与数据库交互,因此默认情况下对象缓存在RAM中,以保证数据一致性。
DB facade提供了一个接口,仅用于构建原始SQL查询,因此它不会像Eloquent那样消耗内存。

相关问题