Laravel 使用 phpredis 擴充套件之後,出現指定 database 無效的情況。

沈益飛發表於2019-05-28

多次運算元據的時候可能會操作到其他的 database 上面。
最後才發現是框架的問題。
版本號

Laravel Framework 5.7.28

這個目錄下面

vendor/laravel/framework/src/Illuminate/Redis/Connectors/PhpRedisConnector.php

    /**
     * Create the Redis client instance.
     *
     * @param  array  $config
     * @return \Redis
     */
    protected function createClient(array $config)
    {
        return tap(new Redis, function ($client) use ($config) {
            $this->establishConnection($client, $config);

            if (! empty($config['password'])) {
                $client->auth($config['password']);
            }

            // 如果$config['database'] = 0 的話這裡返回 false 尷尬所以就沒有呼叫select方法。導致隨意選擇資料庫。
            if (! empty($config['database'])) {
                $client->select($config['database']);
            }

            if (! empty($config['prefix'])) {
                $client->setOption(Redis::OPT_PREFIX, $config['prefix']);
            }

            if (! empty($config['read_timeout'])) {
                $client->setOption(Redis::OPT_READ_TIMEOUT, $config['read_timeout']);
            }
        });
    }
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章