reids之YII常见使用问题

首先YII的框架包中并不含redis部分,需要自己配置和安装。

第一部分:Mac下YII框架的redis安装与配置

1.安装redis

 

方法一:

在没有安装YII的时候,可以通过修改composer的json文件实现修改安装的时候的配置。

 

在cmd(终端)使用,这个是通过composer进行安装。

php composer.phar require --prefer-dist yiisoft/yii2-redis

或者在composer.json文件里添加"yiisoft/yii2-redis": "~2.0.0”文件。在执行YII的安装配置。

 

方法二:

手动安装,先下载yii2.0-redis拓展的安装,把下载的拓展文件放到vendor/yiisoft下。确认命名:yii2-redis

修改vender/yiisoft/下的extensions.php,加入redis扩展

'yiisoft/yii2-redis' =>

   array (

        'name' => 'yiisoft/yii2-redis',

        'version' => '2.2.0.0',

        'alias' =>

       array (

            '@yii/redis' => $vendorDir . '/yiisoft/yii2-redis',

        ),

    ),

 

2.确认环境是否配置。

在终端执行redis-server尝试打开redis服务,如果看到类似:长方体图案和配置信息105040_I1M6_2365565.png

表示redis已经成功安装并开启。如果没有这样的页面,需要安装下redis。

对于redis每次打开的操作,认为比较繁琐的时候,可以考虑直接将redis配置在PHP的插件中,这样可以直接在开启服务环境的时候同时开启redis.开启方式参考:http://www.yiichina.com/topic/6557。目前没有在php.ini中配置。

 

 

3.在YII中配置redis

 

一般和数据库配置在一起,在common的config中。main-local.php 中。

'redis' => [

        'class' => 'yii\redis\Connection',

        'hostname' => 'localhost',

        'port' => 6379,

        'database' => 0,

],

 

这里要注意一点,redis存在多个数据库,在database部分可以设置不同的数据库,对于没有该数据库的情况会自动创建。但是这里的数据库名字不可以是字符串,一般默认为0。可以根据自己的配置情况改为1,2,3....

 

 

4,redis的基本使用

public function actionIndex()

{  

    Yii::$app->redis->set('test','111');  //设置redis缓存

    echo Yii::$app->redis->get('test');   //读取redis缓存

    exit;

    return $this->render('index');

}

 

第二部分:Yii的redis函数

 

以下是几个简单的小实例

1)设置键值

$source = Yii::$app->redis->set('var1','111');

当成功时会返回布尔值

$source = Yii::$app->redis->get('var1');

删除键

$source = Yii::$app->redis->del('var1');

获取键的值

$var2 = Yii::$app->redis->keys("*");

 

对于基本的命令都已转化为函数,可以直接通过redis调用到,这里注意下,在命令中每个参数都需要作为一个函数参数穿入。

 

以排序函数为例:

原命令:
sort DAILY:SCORE LIMIT 0 12 DESC

转化为YII的函数:
Yii::$app->redis->sort(‘DAILY:SCORE’, 'LIMIT', '0', '12','DESC');

原理:

yii\redis\Connection 支持的命令中找到以下注释:

所有的这些命令都会通过下面这个方法执行:

 /**
* Allows issuing all supported commands via magic methods. *
* ```php * $redis->hmset(['test_collection', 'key1', 'val1', 'key2', 'val2']) * ``` * 
* @param string $name name of the missing method to execute 
* @param array $params method call arguments 
* @return mixed 
*/ 
public function __call($name, $params) { 
    $redisCommand = strtoupper(Inflector::camel2words($name, false)); 
    if (in_array($redisCommand, $this->redisCommands)) { 
       return $this->executeCommand($name, $params); 
    } 
    else {
       return parent::__call($name, $params);
    } 
}


public function executeCommand($name, $params = []) { 
    $this->open(); 
    array_unshift($params, $name); $command = '*' . count($params) . "\r\n";
    foreach ($params as $arg) {
       $command .= '$' . mb_strlen($arg, '8bit') . "\r\n" . $arg . "\r\n";
    }
    \Yii::trace("Executing Redis Command: {$name}", __METHOD__);
    fwrite($this->_socket, $command);
    return $this->parseResponse(implode(' ', $params));
}

 

 

转载于:https://my.oschina.net/jlong/blog/1553228

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值