Maison  >  Article  >  cadre php  >  Comment Redis est-il utilisé et encapsulé dans le framework ThinkPHP5 ?

Comment Redis est-il utilisé et encapsulé dans le framework ThinkPHP5 ?

藏色散人
藏色散人avant
2022-02-04 04:00:313090parcourir

La colonne tutorielle thinkphp framework suivante vous présentera comment utiliser et encapsuler Redis dans ThinkPHP5.0. J'espère qu'elle sera utile aux amis dans le besoin !

Redis est une base de données non relationnelle couramment utilisée, principalement utilisée pour la mise en cache des données. Les données sont enregistrées sous forme de clé-valeur et les valeurs clés sont mappées les unes aux autres. les données sont stockées en mémoire, donc la lecture des données est relativement rapide et est très bonne pour une concurrence élevée

ThinkPhP5.0 est livré avec une extension Redis. Avant de l'utiliser, téléchargez php_redis.dll sur http://windows.php. .net/downloads/pecl/ releases/redis/2.2.7/ ; Choisissez la version correspondante en fonction de votre système d'exploitation Windows. Mon système est 64 bits et j'ai installé VC2012, j'ai donc téléchargé php_redis-2.2.7-5.6-ts. -vc11-x64.zip

Après avoir téléchargé le package compressé, décompressez le php_redis.dll à l'intérieur dans D:wampbinphpphp5.6.25ext (sélectionnez en fonction du disque où se trouve votre wamp), puis ajoutez extension=php_redis.dll à php. ini et redémarrez Apache.

Ce qui suit est le code que j'ai testé moi-même. Il n'y a pas beaucoup de packages. Vous pouvez le conditionner en fonction de vos propres besoins.

étendre est thinkPHP5.0扩展类库目录,可以自己去定义

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);
    }
}
namespace app\index\controller;
use think\Controller;
use My\RedisPackage;

class Redis extends Controller
{
    function redis()
    {
        $redis=new RedisPackage();
        $redis::set('dede','我就笑笑');
        echo $redis::get('dede');
    }
}

Apprentissage recommandé. : "tutoriel vidéo thinkphp"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer