当前位置:   article > 正文

ThinkPHP5.1连接Redis的四种途径_hinkphp 5.1 redis

hinkphp 5.1 redis

  • 第一种:perl redis扩展;
  • 第二种:ThinkPHP缓存扩展;
  • 第三种:predis扩展;
  • 第四种:自己简单封装第一种;

四种方式的演示代码

    //redis初步应用
    public function test31(){
        //第一种连接Redis方法   装好扩展后的原生方式   会产生第一个连接
        echo "<hr/>";
        $redis = new \Redis();
        $redis->connect('127.0.0.1', 6379); //连接Redis
        $redis->auth('12345'); //密码验证
        $redis->select(2);//选择数据库2
        $redis->set("testKey", "Hello Redis++++(原始方式)"); //设置测试key
        echo $redis->get("testKey");//输出value
        echo "<hr/>";
        //第二种连接方式  使用thinkphp缓存配置    代码简洁性不够   会产生第二个连接
        Cache::store('redis')->set('name','Hello Redis++++(框架缓存方式)',3600);
        $name=Cache::store('redis')->get('name');
        echo $name;
        echo "<hr/>框架直接存对象:<br/>";
        $t_stock = TStock::where('id','=',1)->find();
        Cache::store('redis')->set('t_stock:1',$t_stock);
        $t_stock_r=Cache::store('redis')->get('t_stock:1');
        var_dump($t_stock_r);
        echo "<hr/>";
        //composer require predis/predis   安装PHP扩展方式,连接方式,类似第一种,没有感觉到优势  这里会产生第三个连接
        $p_redis=new PredisClient();
        $config=['scheme' => 'tcp', 'host' => '127.0.0.1', 'port' => 6379];
        $p_redis->connect($config);
        $p_redis->auth(12345);
        $p_redis->select(2);
        $p_redis->set('name','Hello Redis++++(predis方式)');
        $name=$p_redis->get('name');
        echo $name;
        echo "<hr/>";
        //这里不使用getInstance()方法,直接静态调用,最多只支持4个参数。
        Redis::set('key5','Hello Redis++++(自定义静态代理方式)');
        echo Redis::get('key5');
        echo '<br/>';
        echo Redis::getInstance()->get('key5');
        //相比Laravel框架,composer require predis/predis 后自动生成静态代理,
        //然后在配置文件中配置连接参数,即可直接使用,感觉Laravel处理得更好
        //而THinkphp没有找到类似方式。
        //sleep(15);  //info clients
        //四种方式,产生了四个连接,即使将上面代码复制粘贴一遍,还是4个连接
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

自定义静态代理

<?php
namespace app\facade;


use think\Facade;

class Redis extends Facade
{
    protected static function getFacadeClass()
    {
        return 'app\common\Redis';
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

简单封装连接

<?php
namespace app\common;
use \think\facade\Config;
class Redis
{
    static   private $instance;
   //private function __construct(){}
    public static function getInstance(){
        if (!self::$instance instanceof \Redis){
            $redis=new \Redis;
            $redis->connect(Config::get('cache.redis.host'), Config::get('cache.redis.port')); //连接Redis
            $redis->auth(Config::get('cache.redis.password')); //密码验证
            $redis->select(Config::get('cache.redis.select'));//选择数据库2
            self::$instance=$redis;
        }
        return self::$instance;
    }
    //直接静态调用
    public function __call($method,$ages){
        self::getInstance();
        switch($count=count($ages)){
            case 0:
                return self::$instance->$method();
                break;
            case 1:
                return self::$instance->$method($ages[0]);
                break;
            case 2:
                return self::$instance->$method($ages[0],$ages[1]);
                break;
            case 3:
                return self::$instance->$method($ages[0],$ages[1],$ages[2]);
                break;
            case 4:
                return self::$instance->$method($ages[0],$ages[1],$ages[2],$ages[3]);
                break;
            default:
                return '无法处理';
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/257666
推荐阅读
相关标签
  

闽ICP备14008679号