predis set方法很慢很慢,這是什麼原因?

WBOY
發布: 2016-09-11 11:34:15
原創
1195 人瀏覽過

這是我的程式碼:

<code><?php
/**
 * User: mh
 * Date: 2016/9/9
 * Time: 19:12
 */

namespace Session;

use SessionHandlerInterface;

class RedisSession implements SessionHandlerInterface {
    private $redis;
    // 连接Redis
    private function connect() {
        if(!$this->redis) {
            $cfg = [
                'scheme' => env('REDIS_SCHEME', 'tcp'),
                'host' => env('REDIS_HOST', '127.0.0.1'),
                'port' => env('REDIS_PORT', 6379)
            ];
            $this->redis = new \Predis\Client($cfg);
        }
    }
    /**
     * Close the session
     * @since 5.4.0
     */
    public function close()
    {
        return true;
    }

    /**
     * Destroy a session
     * @return boolean
     * @since 5.4.0
     */
    public function destroy($session_id)
    {
        $this->connect();
        $this->redis->del($session_id);
        return true;
    }

    /**
     * Cleanup old sessions
     * @return boolean
     * @since 5.4.0
     */
    public function gc($maxlifetime)
    {
        return true;
    }

    /**
     * Initialize session
     * @since 5.4.0
     */
    public function open($save_path, $sessionName)
    {
        return true;
    }

    /**
     * Read session data
     * @return string
     * @since 5.4.0
     */
    public function read($session_id)
    {
        $this->connect();
        if($this->redis->exists($session_id)) {
            $value = $this->redis->get($session_id);
            return $value ? ($value) : '';
        } else {
            $expire = configure('Ymf.Account.expire');
            $this->redis->setex($session_id, $expire, '');
            return '';
        }
        return '';
    }

    /**
     * Write session data
     * @return boolean
     * @since 5.4.0
     */
    public function write($session_id, $sessionData)
    {
        $this->connect();
        file_put_contents(__DIR__ . '/../../write.log', "写入{$sessionData}\r\n", FILE_APPEND);
        if($this->redis->set("flf", "hfl")) {
            return true;
        } else {
            return false;
        }
    }
}</code>
登入後複製
登入後複製

排查只會,發現這個$this->redis->set方法特別慢,什麼原因。 。 。 。

回覆內容:

這是我的程式碼:

<code><?php
/**
 * User: mh
 * Date: 2016/9/9
 * Time: 19:12
 */

namespace Session;

use SessionHandlerInterface;

class RedisSession implements SessionHandlerInterface {
    private $redis;
    // 连接Redis
    private function connect() {
        if(!$this->redis) {
            $cfg = [
                'scheme' => env('REDIS_SCHEME', 'tcp'),
                'host' => env('REDIS_HOST', '127.0.0.1'),
                'port' => env('REDIS_PORT', 6379)
            ];
            $this->redis = new \Predis\Client($cfg);
        }
    }
    /**
     * Close the session
     * @since 5.4.0
     */
    public function close()
    {
        return true;
    }

    /**
     * Destroy a session
     * @return boolean
     * @since 5.4.0
     */
    public function destroy($session_id)
    {
        $this->connect();
        $this->redis->del($session_id);
        return true;
    }

    /**
     * Cleanup old sessions
     * @return boolean
     * @since 5.4.0
     */
    public function gc($maxlifetime)
    {
        return true;
    }

    /**
     * Initialize session
     * @since 5.4.0
     */
    public function open($save_path, $sessionName)
    {
        return true;
    }

    /**
     * Read session data
     * @return string
     * @since 5.4.0
     */
    public function read($session_id)
    {
        $this->connect();
        if($this->redis->exists($session_id)) {
            $value = $this->redis->get($session_id);
            return $value ? ($value) : '';
        } else {
            $expire = configure('Ymf.Account.expire');
            $this->redis->setex($session_id, $expire, '');
            return '';
        }
        return '';
    }

    /**
     * Write session data
     * @return boolean
     * @since 5.4.0
     */
    public function write($session_id, $sessionData)
    {
        $this->connect();
        file_put_contents(__DIR__ . '/../../write.log', "写入{$sessionData}\r\n", FILE_APPEND);
        if($this->redis->set("flf", "hfl")) {
            return true;
        } else {
            return false;
        }
    }
}</code>
登入後複製
登入後複製

排查只會,發現這個$this->redis->set方法特別慢,什麼原因。 。 。 。

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板