【问题标题】:Redis slower than MySQLRedis 比 MySQL 慢
【发布时间】: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() 包含什么?您是在每次迭代中重用连接还是创建新连接?

标签: php mysql redis


【解决方案1】:

你应该发布 cache() 实现。没有这些,人们无法帮助您解释为什么它很慢

还有几点

  1. 即使您不使用管道或 mget,redis 也不应该那么长
  2. 您可以使用管道或 mget 进一步加快 redis 的速度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-02
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多