Heim  >  Artikel  >  PHP-Framework  >  Wie wird Redis im ThinkPHP5-Framework verwendet und gekapselt?

Wie wird Redis im ThinkPHP5-Framework verwendet und gekapselt?

藏色散人
藏色散人nach vorne
2022-02-04 04:00:313022Durchsuche

Die folgende Tutorial-Kolumne zum thinkphp-Framework zeigt Ihnen, wie Sie Redis in ThinkPHP5.0 verwenden und kapseln. Ich hoffe, dass es für Freunde in Not hilfreich sein wird!

Redis ist eine häufig verwendete nicht relationale Datenbank, die hauptsächlich zum Zwischenspeichern von Daten verwendet wird. Die Datenspeicherung unterscheidet sich von MySQL Die Daten werden im Speicher gespeichert, daher ist das Lesen der Daten relativ schnell und eignet sich sehr gut für eine hohe Parallelität.

ThinkPhP5.0 wird mit einer Redis-Erweiterung geliefert. Laden Sie vor der Verwendung php_redis.dll unter http://windows.php herunter .net/downloads/pecl/ releases/redis/2.2.7/ ;Wählen Sie die entsprechende Version entsprechend Ihrem Windows-Betriebssystem. Mein System ist 64-Bit und ich habe VC2012 installiert, also habe ich php_redis-2.2.7-5.6-ts heruntergeladen -vc11-x64.zip

Entpacken Sie nach dem Herunterladen des komprimierten Pakets die darin enthaltene php_redis.dll nach D:wampbinphpphp5.6.25ext (wählen Sie entsprechend der Festplatte aus, auf der sich Ihr Wamp befindet), und fügen Sie dann extension=php_redis.dll zu php hinzu. ini und starten Sie Apache neu.

Der Code, den ich selbst getestet habe, ist nicht in der Lage, ihn nach Ihren eigenen Bedürfnissen zu packen.

namespace My;  //目录我放在thinkphp5.0/extend/My  

class RedisPackage
{
    protected static $handler = null;
    protected $options = [
        'host' => '127.0.0.1',
        'port' => 6379,
        'password' => '',
        'select' => 0,
        'timeout' => 0,    //关闭时间 0:代表不关闭
        'expire' => 0,
        'persistent' => false,
        'prefix' => '',
    ];

    public function __construct($options = [])
    {
        if (!extension_loaded('redis')) {   //判断是否有扩展(如果你的apache没reids扩展就会抛出这个异常)
            throw new \BadFunctionCallException('not support: redis');      
        }
        if (!empty($options)) {
            $this->options = array_merge($this->options, $options);
        }
        $func = $this->options['persistent'] ? 'pconnect' : 'connect';     //判断是否长连接
        self::$handler = new \Redis;
        self::$handler->$func($this->options['host'], $this->options['port'], $this->options['timeout']);

        if ('' != $this->options['password']) {
            self::$handler->auth($this->options['password']);
        }

        if (0 != $this->options['select']) {
            self::$handler->select($this->options['select']);
        }
    }

    /**
     * 写入缓存
     * @param string $key 键名
     * @param string $value 键值
     * @param int $exprie 过期时间 0:永不过期
     * @return bool
     */
    public static function set($key, $value, $exprie = 0)
    {
        if ($exprie == 0) {
            $set = self::$handler->set($key, $value);
        } else {
            $set = self::$handler->setex($key, $exprie, $value);
        }
        return $set;
    }

    /**
     * 读取缓存
     * @param string $key 键值
     * @return mixed
     */
    public static function get($key)
    {
        $fun = is_array($key) ? 'Mget' : 'get';
        return self::$handler->{$fun}($key);
    }

    /**
     * 获取值长度
     * @param string $key
     * @return int
     */
    public static function lLen($key)
    {
        return self::$handler->lLen($key);
    }

    /**
     * 将一个或多个值插入到列表头部
     * @param $key
     * @param $value
     * @return int
     */
    public static function LPush($key, $value, $value2 = null, $valueN = null)
    {
        return self::$handler->lPush($key, $value, $value2, $valueN);
    }

    /**
     * 移出并获取列表的第一个元素
     * @param string $key
     * @return string
     */
    public static function lPop($key)
    {
        return self::$handler->lPop($key);
    }
}
rreee : „

Thinkphp-Video-Tutorial扩展类库目录,可以自己去定义

Das obige ist der detaillierte Inhalt vonWie wird Redis im ThinkPHP5-Framework verwendet und gekapselt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen