predis set方法很慢很慢,这是什么原因?

WBOY
Libérer: 2016-09-11 11:34:15
original
1197 Les gens l'ont consulté

这是我的代码:

<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>
Copier après la connexion
Copier après la connexion

排查只会,发现这个$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>
Copier après la connexion
Copier après la connexion

排查只会,发现这个$this->redis->set方法特别慢,什么原因。。。。

Étiquettes associées:
php
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal