我想缓存整个表,
当我使用雄辩时,它使用大量的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()
});
有人能解释一下其中的区别吗?
2条答案
按热度按时间8zzbczxx1#
两者都有相同的SQL查询,
但是这个
return User::all();
或return User::get();
将运行与模型相关的功能,即属性转换、数据转换等。而构建器
return DB::table('users')->get();
将直接输出结果,无论SQL向其抛出什么。pwuypxnk2#
Eloquent提供面向对象的接口与数据库交互,因此默认情况下对象缓存在RAM中,以保证数据一致性。
DB facade提供了一个接口,仅用于构建原始SQL查询,因此它不会像Eloquent那样消耗内存。