【发布时间】:2020-02-29 19:08:33
【问题描述】:
我有两种方法,一种是查询数据库,另一种是从 Redis 缓存中检索数据。
public function aaa()
{
for ($i = 0; $i < 1000; $i++) {
$gl = DB::connection('webhesab')->table('gl_trans')
->where('memo_', 'LIKE', '%شعبه%')
->orWhere('account', '=', 111001)
->where('dimension2_id', '<>', 1)
->orWhere('person_id', '=', 0)
->where('dimension2_id', '<>', 1)
->orWhere('type_no', '<>', 50)
->limit(10)
->get();
}
}
public function bbb()
{
for ($i = 0; $i < 1000; $i++) {
$gl = cache()->get('gl_trans');
}
}
缓存对象的值与查询值完全相同。
但是缓存比数据库查询慢得多。大约 aaa 长 300 毫秒和 bbb 长 1900 毫秒。
为什么?有什么问题?
【问题讨论】:
-
可能是因为在 bbb 的 for 循环中,您每次都获得了所有数据?
-
为什么在缓存中使用 for 循环?
-
不像aaa只有10条记录
-
抱歉,我们需要有关您的 redis 缓存配置的更多信息,因为像这样的简单代码行并没有提供任何有用的信息
-
您还应该检查是连接速度慢还是获取速度慢(或两者兼而有之)。函数
cache()包含什么?您是在每次迭代中重用连接还是创建新连接?