Yii2使用Redis - 从安装redis到使用 [ 2.0 版本 ]

一、安装Redis和简单配置

1. 下载Redis安装包

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

二、安装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
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 版)

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 - 从安装redis到使用 [ 2.0 版本 ]的更多相关文章

  1. Asp.net MVC + Redis(Linux安装Redis)

    最近有幸在工作中用到了redis,玩的还算开心.但是发现Redis在Windows上并不是满血状态的,所以决定安装一个Linux的虚拟机,让Redis在Linux上运行. 虚拟环境 虚拟机,我已经玩了 ...

  2. Linux环境——MySQL安装及配置(8.0版本)

    虚拟机环境是Linux  Red Hat Enterprlse Linux (64位),本次安装的是Mysql 8.0版本. 由于有经验了,所以又弄了台虚拟机练手,承接上一篇博客(https://ww ...

  3. [nosql之redis]yum安装redis

    1.首先对于这种nosql来说目前我用到的功能很少,所以感觉没有必要去优化他跟不需要去编译安装.今天来介绍下一个yum安装redis 步骤1:安装扩展yum库 [root@localhost ~]# ...

  4. Redis --> Ubuntu安装redis

    Ubuntu安装redis   一.下载安装 root@21ebdf03a086:/# apt-cache search redis root@21ebdf03a086:/# apt-get inst ...

  5. redis数据库安装 redis持久化及主从复制

    ----------------------------------------安装redis-5.0.4---------------------------------------- wget h ...

  6. 【Redis】安装 Redis接口时异常 ,系统ruby版本过低

    场景 操作系统Linux CentOS 7.2,安装Redis接口时,使用命令:gem install redis ,用于系统ruby版本过低,报错“redis requires Ruby versi ...

  7. Linux安装redis PHP安装Redis扩展 and基本命令

    一.安装redis 用超级管理员身份运行: $ mkdir /usr/local/redis #redis安装目录 $ cd /usr/local/src #安装包下载目录 $ wget http:/ ...

  8. Redis系列---安装redis单机版02

    本章将带领大家一步一步安装Redis单机版(Redis从3.0版本后就开始支持集群了,集群将会后边章节带领大家操作) 准备环境: Centos 6.X redis3.+版本(自行下载,redis 的版 ...

  9. Centos7安装percona-xtrabackup2.4和8.0版本

    Percona XtraBackup是一个基于MySQL的服务器的开源热备份实用程序 ,它不会在备份期间锁定您的数据库.无论是24x7高负载服务器还是低事务量环境,Percona XtraBackup ...

随机推荐

  1. 重读金典------高质量C编程指南(林锐)-------第五章 常量

    5.1  为什么需要常量 1)为了便于用户理解,增加程序的可读性. 2)在程序的很多地方都用到同一个常量,用某一个宏常量来定义可以减少错误. 规则:尽可能的使用含义直观明确的常量来表示程序中多次出现的 ...

  2. Java下HttpUnit和Jsoup的Http抓取

    简单记录下:搜集信息-分析问题-解决问题 关于html文档的操作现成库有: HttpUnit 很老了,不更了 http://www.httpunit.org/  20 May 2008 HttpUni ...

  3. 深入Asyncio(七)异步上下文管理器

    Async Context Managers: async with 在某些场景下(如管理网络资源的连接建立.断开),用支持异步的上下文管理器是很方便的. 那么如何理解async with关键字? 先 ...

  4. 05 redis中的Setbit位图法统计活跃用户

    一:场景=>>>长轮询Ajax,在线聊天时,能够用到 Setbit 的实际应用 场景: 1亿个用户, 每个用户 登陆/做任意操作 ,记为 今天活跃,否则记为不活跃 每周评出: 有奖活 ...

  5. Continuously Integrate

     Continuously Integrate David Bartlett THE Build AS A "Big BAng" EvEnT in project develop ...

  6. python 中读取excel

    第一步:  先下载一个xlrd 包 # pip install xlrd import xlrd from datetime import date, datetime file = '学生信息表.x ...

  7. 【BZOJ4945】[Noi2017]游戏 2-SAT

    [BZOJ4945][Noi2017]游戏 题目描述 题解:2-SAT学艺不精啊! 这题一打眼看上去是个3-SAT?哎?3-SAT不是NPC吗?哎?这题x怎么只有8个?暴力走起! 因为x要么不是A要么 ...

  8. 九度OJ 1054:字符串内排序 (排序)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:7949 解决:4343 题目描述: 输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串. 输入: 测试数据有多组,输 ...

  9. Oracle中日期和时间类函数

    首先,在oracle中如何表示日期 操作日期时,应使用to_date('date','dateType')函数得到date类型,其中date为任意格式的日期,dateType指定其格式,如to_dat ...

  10. 【剑指Offer学习】【面试题33:把数组排成最小的数】

    题目:输入一个正整数数组,把数组里全部数字拼接起来排成一个数.打印能拼接出的全部数字中最小的一个. 样例说明: 比如输入数组{3. 32, 321},则扫描输出这3 个数字能排成的最小数字321323 ...