1. 云栖社区>
  2. PHP教程>
  3. 正文

reids之YII常见使用问题

作者:用户 来源:互联网 时间:2017-11-30 16:27:11

问题yii使用常见reids

reids之YII常见使用问题 - 摘要: 本文讲的是reids之YII常见使用问题, 首先YII的框架包中并不含redis部分,需要自己配置和安装。 第一部分:Mac下YII框架的redis安装与配置 1.安装redis 方法一: 在没有安装YII的时候,可以通过修改composer的json文件实现修改安装的时候的配置。

首先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服务,如果看到类似:长方体图案和配置信息reids之YII常见使用问题-


表示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));
}

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索问题 , yii , 使用 , 常见 reids ,以便于您获取更多的相关知识。