| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | <?php/** * Created by PhpStorm. * User: zhengmingwei * Date: 2020/3/1 * Time: 6:13 PM */namespace addons\unishop\extend;use think\Env;use think\Exception;/** * Class Redis * @package addons\unishop\extend * */class Redis{    public $handler = null;    private $options = [];    /**     * 构造函数     * @param array $options 缓存参数     * @access public     */    public function __construct($options = [])    {        self::available();        $this->options = array_merge([            'host'       => Env::get('redis.host', '127.0.0.1'),            'port'       => Env::get('redis.port', 6379),            'password'   => Env::get('redis.password', ''),            'select'     => Env::get('redis.select', 2), // 默认使用2数据库索引, 因为fastadmin请缓存会清掉1的            'timeout'    => Env::get('redis.timeout', 0),            'expire'     => Env::get('redis.expire', 0),            'persistent' => Env::get('redis.persistent', false),            'prefix'     => Env::get('redis.prefix', ''),        ], $options);        try {            $this->handler = new \Redis;            if ($this->options['persistent']) {                $this->handler->pconnect($this->options['host'], $this->options['port'], $this->options['timeout'], 'persistent_id_' . $this->options['select']);            } else {                $this->handler->connect($this->options['host'], $this->options['port'], $this->options['timeout']);            }            if ('' != $this->options['password']) {                $this->handler->auth($this->options['password']);            }            if (0 != $this->options['select']) {                $this->handler->select($this->options['select']);            }        } catch (\RedisException $e) {            throw new Exception($e->getMessage().': redis');        }    }    public static function available()    {        if (!extension_loaded('redis')) {            throw new Exception('not support: redis');        }    }}
 |