文档章节

reids之YII常见使用问题

0_0Loong
 0_0Loong
发布于 2017/10/19 11:10
字数 847
阅读 82
收藏 0

首先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服务,如果看到类似:长方体图案和配置信息

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

 

 

© 著作权归作者所有

0_0Loong
粉丝 8
博文 70
码字总数 64426
作品 0
西安
程序员
私信 提问
Yii basic 去掉index.php 后缀

安装 Yii 社区推荐:掘金是一个面向程序员的技术社区,从后端到架构,从 PHP 最佳实践到一线大厂经验分享,无论入门还是进阶,来掘金你不会错过后端开发的任何一个技术干货。 你可以通过两种...

全栈coder
2018/11/22
0
0
从Yii2登陆中看PHP的工厂模式

首先,简单介绍下工厂模式: 在大型系统中,许多代码依赖于少数几个关键类。需要更改这些类时,可能会出现困难。例如,假设您有一个从文件读取的 User 类。您希望将其更改为从数据库读取的其...

卖小女孩的小火柴
2015/05/25
2.3K
7
yii2实战教程之新手入门指南-简单博客管理系统

作者:白狼 出处:http://www.manks.top/document/easy_blog_manage_system.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追...

白狼栈
2016/06/10
81
0
liufee/yii2-swoole

yii2 swoole 让yii2运行在swoole上。如果您在使用中遇到问题或者想学习yii2结合swoole可以加qq群258780872一起讨论 性能 运行在swoole上的yii2是运行在php-fpm上yii2的5倍以上,而且一句代码...

liufee
2017/12/26
0
0
记录Yii2框架开发遇到微信错误提示

转载地址 记录Yii2框架开发遇到微信错误提示 微信公共号开发,提示“该公众号暂时无法提供服务,请稍后再试”,如何解决? 以前使用Yii框架的时候,并没有像Yii2,以前的Yii框架似乎用起来在...

durban
2018/07/22
20
0

没有更多内容

加载失败,请刷新页面

加载更多

Android 图片加载带进度条的ImageView

https://blog.csdn.net/shu_quan/article/details/79975578

shzwork
17分钟前
7
0
关于XAMPP默认端口80 和443被占用的问题

本文转载于:专业的前端网站➩关于XAMPP默认端口80 和443被占用的问题 关于安装xampp-win32-1.8.1-VC9-installer.zip后启动时候报端口80和443被占用的问题解决 xampp-win32-1.8.1-VC9-instal...

前端老手
19分钟前
6
0
错误Setting the parent of a transform which resides in a Prefab Asset is...

错误日志 Setting the parent of a transform which resides in a Prefab Asset is disabled to prevent data corruption 原因1 用Resouce.Load加载一个prefab,没有实例化直接设置parent ......

XBlock
19分钟前
9
0
Spring boot 配置mybatis

当然任何模式都需要首先引入mybatis-spring-boot-starter的pom文件,现在最新版本是1.1.1(刚好快到双11了 :)) <dependency>    <groupId>org.mybatis.spring.boot</groupId>    <......

雷开你的门
20分钟前
9
0
云栖干货回顾 | 更强大的实时数仓构建能力!分析型数据库PostgreSQL 6.0新特性解读

阿里云 AnalyticDB for PostgreSQL 为采用MPP架构的分布式集群数据库,完备支持SQL 2003,部分兼容Oracle语法,支持PL/SQL存储过程,触发器,支持标准数据库事务ACID。AnalyticDB PG通过行存...

开源中国小二
32分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部