• Thinkphp3.2 Redis支持REDIS_AUTH验证


    原有的Redis类在Library/Think/Cache/Driver/中

    换成下面的:

    <?php
    // +----------------------------------------------------------------------
    // | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
    // +----------------------------------------------------------------------
    // | Copyright (c) 2006-2013 http://thinkphp.cn All rights reserved.
    // +----------------------------------------------------------------------
    // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
    // +----------------------------------------------------------------------
    // | Author: liu21st <liu21st@gmail.com>
    // +----------------------------------------------------------------------
    namespace ThinkCacheDriver;
    use ThinkCache;
    defined('THINK_PATH') or exit();
    
    /**
     * Redis缓存驱动
     * 要求安装phpredis扩展:https://github.com/nicolasff/phpredis
     */
    class Redis extends Cache {
         /**
         * 架构函数
         * @param array $options 缓存参数
         * @access public
         */
        public function __construct($options=array()) {
            if ( !extension_loaded('redis') ) {
                E(L('_NOT_SUPPERT_').':redis');
            }
            if(empty($options)) {
                $options = array (
                    'host'          => C('REDIS_HOST') ? C('REDIS_HOST') : '127.0.0.1',
                    'port'          => C('REDIS_PORT') ? C('REDIS_PORT') : 6379,
                    'timeout'       => C('DATA_CACHE_TIMEOUT') ? C('DATA_CACHE_TIMEOUT') : false,
                    'auth'      => C('REDIS_AUTH') ? C('REDIS_AUTH'):null,//auth认证
                    'persistent'    => false,
                );
            }
            $this->options =  $options;
            $this->options['expire'] =  isset($options['expire'])?  $options['expire']  :   C('DATA_CACHE_TIME');
            $this->options['prefix'] =  isset($options['prefix'])?  $options['prefix']  :   C('DATA_CACHE_PREFIX');
            $this->options['length'] =  isset($options['length'])?  $options['length']  :   0;
            $func = $options['persistent'] ? 'pconnect' : 'connect';
            $this->handler  = new Redis;
            $options['timeout'] === false ?
                $this->handler->$func($options['host'], $options['port']) :
                $this->handler->$func($options['host'], $options['port'], $options['timeout']);
    
            //Auth参数
            if($this->options['auth']!=null)
            {
                $this->handler->auth($this->options['auth']);
            }
        }
    
        /**
         * 读取缓存
         * @access public
         * @param string $name 缓存变量名
         * @return mixed
         */
        public function get($name) {
            N('cache_read',1);
            $value = $this->handler->get($this->options['prefix'].$name);
            $jsonData  = json_decode( $value, true );
            return ($jsonData === NULL) ? $value : $jsonData;   //检测是否为JSON数据 true 返回JSON解析数组, false返回源数据
        }
    
        /**
         * 写入缓存
         * @access public
         * @param string $name 缓存变量名
         * @param mixed $value  存储数据
         * @param integer $expire  有效时间(秒)
         * @return boolean
         */
        public function set($name, $value, $expire = null) {
            N('cache_write',1);
            if(is_null($expire)) {
                $expire  =  $this->options['expire'];
            }
            $name   =   $this->options['prefix'].$name;
            //对数组/对象数据进行缓存处理,保证数据完整性
            $value  =  (is_object($value) || is_array($value)) ? json_encode($value) : $value;
            if(is_int($expire)) {
                $result = $this->handler->setex($name, $expire, $value);
            }else{
                $result = $this->handler->set($name, $value);
            }
            if($result && $this->options['length']>0) {
                // 记录缓存队列
                $this->queue($name);
            }
            return $result;
        }
    
        /**
         * 删除缓存
         * @access public
         * @param string $name 缓存变量名
         * @return boolean
         */
        public function rm($name) {
            return $this->handler->delete($this->options['prefix'].$name);
        }
    
        /**
         * 清除缓存
         * @access public
         * @return boolean
         */
        public function clear() {
            return $this->handler->flushDB();
        }
    
    }
    

    配置文件:

     //redis配置
        'REDIS_HOST'=>'ip地址',
        'REDIS_PORT'=>端口号, //默认6379
        'REDIS_AUTH'=>'验证密码',
        'DATA_CACHE_TIMEOUT' => 300,

     然后在控制器内头部先引入类库:

    use ThinkCacheDriverRedis;

    在方法内创建对象:

    $redis = new Redis();
    $redis->set('键','值’);//存
    $redis->get('键');//取
    
  • 相关阅读:
    rosservice call ERROR:Unable to load type ... Have you typed 'make'
    查看ubuntu版本号
    VirtualBox虚拟机 host/guest 拷贝粘贴,共享剪贴板,安装guest additions
    traffic_light_bag_file 数据集 下载链接
    ubuntu linux double tab
    ubuntu linux查看cpu信息
    ubuntu linux查看硬盘使用量
    ubuntu查看nvidia显卡状态
    ibus
    windows7 屏幕亮图胡乱变化
  • 原文地址:https://www.cnblogs.com/guoyachao/p/7521801.html
Copyright © 2020-2023  润新知