Yii2使用Redis - 从安装redis到使用
2017-03-10 16:30
323 查看
一、安装Redis和简单配置
1. 下载Redis安装包
地址:http://redis.io/download , 本文选择Stable(3.0)版本wget http://download.redis.io/releases/redis-3.0.5.tar.gz
2. 安装Redis
tar xzf redis-3.0.5.tar.gz cd redis-3.0.5 make
3. 启动Redis
./src/redis-server &
附加内容 :
Redis默认不是后台启动,不加 “&” 时会一直停留在命令界面最好搭配配置文件一起启动例如:
./src/redis-server ./redis.conf
redis.conf中设置 “daemonize no” 为 “daemonize yes” 也代表redis以后台的方式启动,前提时redis-server启动时带上redis.conf
4. 停止Redis
./src/redis-cli shutdown
二、安装phpredis扩展
1. 下载phpredis扩展安装包
wget http://pecl.php.net/get/redis-2.2.7.tgz , 本文选择2.2.7版本
2. 安装phpredis
tar zxvf redis-2.2.7.tgz cd redis-2.2.7 /opt/server/php-5.5.7/bin/phpize ./configure make sudo make install
以上步骤完成后需要在php.ini中添加如下代码:
extension=/opt/server/php-5.5.7/lib/php/extensions/no-debug-non-zts-20121212/redis.so
3.重启web组件(本文使用Nginx + php5-fpm)
/opt/server/nginx/sbin/nginx -s reload kill -USR2 `cat /opt/server/php-5.5.7/var/run/php-fpm.pid`
三、配置Yii2的redis扩展(本文使用Yii2 basic 版)
官方提供的文档地址:https://github.com/yiisoft/yii2-redis/blob/master/docs/guide/README.md
1. 安装Yii2的redis扩展
cd /www/html/basic php composer.phar require --prefer-dist yiisoft/yii2-redis
2. 配置basic/config/web.php
在components数组中添加如下内容:'redis' => [ 'class' => 'yii\redis\Connection', 'hostname' => 'localhost', 'port' => 6379, 'database' => 0, ],
3. 使用
$redis = Yii::$app->redis; $redis->get('key'); $redis->set('k','v');
附加(一些报错解决)
basic/vendor/yiisoft/yii2-redis/Connection.php文件的源码中265行开始(因实际而定)变量 errorNumber 、errorDescription ,没提前定义Yii2 一直报undefined
"@"把报错屏蔽了,一直查不到原因,删掉"@"才发现stream_socket_client、stream_socket_server()这两个函数禁用了
更改前
$this->_socket = @stream_socket_client( $this->unixSocket ? 'unix://' . $this->unixSocket : 'tcp://' . $this->hostname . ':' . $this->port, $errorNumber, $errorDescription, $this->connectionTimeout ? $this->connectionTimeout : ini_get("default_socket_timeout") );
更改后
//也可以不定义这两个变量,通常项目都会忽略notice报错,视实际情况而定 $errorNumber = ''; $errorDescription = ''; //----如果报错:Warning:stream_socket_server() has been disabled for security reasons... 请看下面解决方法 //----这里"@" ↓↓↓ 把报错屏蔽了,需要删除"@"才能看见上面的报错, $this->_socket = stream_socket_client( $this->unixSocket ? 'unix://' . $this->unixSocket : 'tcp://' . $this->hostname . ':' . $this->port, $errorNumber, //----这两个变量没有提前定义一直报undefined $errorDescription, //----这两个变量没有提前定义一值报undefined $this->connectionTimeout ? $this->connectionTimeout : ini_get("default_socket_timeout") );
解决方法:编辑php.ini把disable_functions=...中找到stream_socket_server()、stream_socket_client删除并保存,重启web组件即可
相关文章推荐
- Yii2框架使用redis(一): Linux下redis的安装和开启
- Yii2使用Redis - 从安装redis到使用
- redis的介绍与使用(一) - 安装、扩展、benchmark等
- Redis在windows下的安装使用
- redis的安装配置使用(一)
- windows下redis的安装和使用
- windows下安装redis 缓存程序的安装和使用
- Redis与PHP的安装与使用Redis与PHP的安装与使用
- redis 安装和使用
- PHP中redis 的安装和使用(2)
- PHP中redis 的安装和使用(1)
- Redis安装使用
- redis安装和使用
- Redis在windows的安装使用
- Redis 安装使用(二) PHP-redis中文文档
- redis的安装配置使用(一)
- Redis在windows下的安装使用
- Redis 安装使用(一)
- Redis在windows的安装使用
- redis的安装配置使用(二) jedis访问