ThinkPHP5.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个连接
    }

自定义静态代理

<?php
namespace app\facade;


use think\Facade;

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

简单封装连接

<?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 '无法处理';
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值