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

一、安装Redis和简单配置

1. 下载Redis安装包

  1. wget http://download.redis.io/releases/redis-3.0.5.tar.gz

2. 安装Redis

  1. tar xzf redis-3.0.5.tar.gz
  2. cd redis-3.0.5
  3. make

3. 启动Redis

  1. ./src/redis-server &

附加内容 :

  • Redis默认不是后台启动,不加 “&” 时会一直停留在命令界面

    • 最好搭配配置文件一起启动例如:
  1. ./src/redis-server ./redis.conf
  • redis.conf中设置 “daemonize no” 为 “daemonize yes” 也代表redis以后台的方式启动,前提时redis-server启动时带上redis.conf

二、安装phpredis扩展

1. 下载phpredis扩展安装包

  1. wget http://pecl.php.net/get/redis-2.2.7.tgz , 本文选择2.2.7版本

2. 安装phpredis

  1. tar zxvf redis-2.2.7.tgz
  2. cd redis-2.2.7
  3. /opt/server/php-5.5.7/bin/phpize
  4. ./configure
  5. make
  6. make install
  • 以上步骤完成后需要在php.ini中添加如下代码:
  1. extension=/opt/server/php-5.5.7/lib/php/extensions/no-debug-non-zts-20121212/redis.so

3.重启web组件(本文使用Nginx + php5-fpm)

  1. /opt/server/nginx/sbin/nginx -s reload
  2. kill -USR2 `cat /opt/server/php-5.5.7/var/run/php-fpm.pid`

三、配置Yii2的redis扩展(本文使用Yii2 basic 版)

  1. cd /www/html/basic
  2. php composer.phar require --prefer-dist yiisoft/yii2-redis

2. 配置basic/config/web.php

在components数组中添加如下内容:

  1. 'redis' => [
  2. 'class' => 'yii\redis\Connection',
  3. 'hostname' => 'localhost',
  4. 'port' => 6379,
  5. 'database' => 0,
  6. ],

3. 使用

  1. $redis = Yii::$app->redis;
  2. $redis->get('key');
  3. $redis->set('k','v');

附加(一些报错解决)

basic/vendor/yiisoft/yii2-redis/Connection.php文件的源码中265行开始(因实际而定)

  • 变量 errorNumber 、errorDescription ,没提前定义Yii2 一直报undefined

  • "@"把报错屏蔽了,一直查不到原因,删掉"@"才发现stream_socket_client、stream_socket_server()这两个函数禁用了

更改前

  1. $this->_socket = @stream_socket_client(
  2. $this->unixSocket ? 'unix://' . $this->unixSocket : 'tcp://' . $this->hostname . ':' . $this->port,
  3. $errorNumber,
  4. $errorDescription,
  5. $this->connectionTimeout ? $this->connectionTimeout : ini_get("default_socket_timeout")
  6. );

更改后

  1. //也可以不定义这两个变量,通常项目都会忽略notice报错,视实际情况而定
  2. $errorNumber = '';
  3. $errorDescription = '';
  4. //----如果报错:Warning:stream_socket_server() has been disabled for security reasons... 请看下面解决方法
  5. //----这里"@" ↓↓↓ 把报错屏蔽了,需要删除"@"才能看见上面的报错,
  6. $this->_socket = stream_socket_client(
  7. $this->unixSocket ? 'unix://' . $this->unixSocket : 'tcp://' . $this->hostname . ':' . $this->port,
  8. $errorNumber, //----这两个变量没有提前定义一直报undefined
  9. $errorDescription, //----这两个变量没有提前定义一值报undefined
  10. $this->connectionTimeout ? $this->connectionTimeout : ini_get("default_socket_timeout")
  11. );

解决方法:编辑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. robot framework selenium2library定位

    进行页面元素操作,最麻烦的莫过于元素定位了,经常提示element is not visible 或者element is not exist 下面介绍常见的定位方法和定位中的问题 1 使用name和 ...

  2. NightWatchJS(转)

    关于Nightwatch? Nightwatch.js是一个测试web app和web 站点的自动化测试框架, 使用Node.js编写, 基于Selenium WebDriver API. 它是一个完 ...

  3. 应对ie双外边距,不使用hack

    1.在浮动元素内层加一层div 2.使用不浮动的内层外边距来定义距离 ie在浮动时,并且使用外边距,会产生双倍外边距.

  4. IOS-4-面试题1:黑马程序猿IOS面试题大全

    一.多线程网络 1. 多线程的底层实现? 1> 首先搞清楚什么是线程.什么是多线程 2> Mach是第一个以多线程方式处理任务的系统.因此多线程的底层实现机制是基于Mach的线程 3> ...

  5. SQL Server 的collate的含义

    什么叫排序规则呢?MS是这样描述的:"在 Microsoft SQL Server 2000 中,字符串的物理存储由排序规则控制.排序规则指定表示每个字符的位模式以及存储和比较字符所使用的规 ...

  6. JavaWeb学习总结第三篇--走进JSP页面元素

    JavaWeb学习(三)—走进JSP页面元素 JSP:Java Server Pages,译为Java服务器页面.其脚本采用Java语言,继承了Java所有优点.JSP元素可以分为指令元素.脚本元素和 ...

  7. Echache整合Spring缓存实例解说

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要介绍了EhCache,并通过整合Spring给出了一个使用实例. 一.EhCac ...

  8. EntityFramework走马观花之CRUD(中)

    如果是独立的实体对象,在底层数据库中它对应一张独立的表,那么,对它进行新建.删除和修改没有任何难度,实在不值浪费笔墨在它上头. 在现实项目中,完全独立的对象少之又少,绝大多数情况都是对象之间有着紧密的 ...

  9. ifndef/define/endif 和 #ifdef 、#if 作用和用法

    为了能简单的看看某些linux内核源码,复习了一下c语音,今天汇总了一下关于宏定义的相关内容: 一.ifndef/define/endif用法: .h文件,如下: #ifndef XX_H #defi ...

  10. 【BZOJ4710】[Jsoi2011]分特产 组合数+容斥

    [BZOJ4710][Jsoi2011]分特产 Description JYY 带队参加了若干场ACM/ICPC 比赛,带回了许多土特产,要分给实验室的同学们. JYY 想知道,把这些特产分给N 个同 ...