yii2 – redis 配置

  1. 安装redis, 下面是2.8,注意,redis版本一定要高,2.2.7一下的版本是不行的,不支持php-redis,建议安装2.8+的版本
wget http://download.redis.io/releases/redis-3.2.9.tar.gz  
tar xzf redis-3.2.9.tar.gz  
cd redis-3.2.9  
make

2.6.14 这个版本有点老,大家可去找新的redis下载

cd src  
cp redis-server /usr/local/bin/  
cp redis-cli /usr/local/bin/

 

mkdir /etc/redis  
mkdir /var/redis  
mkdir /var/redis/6379

 

cd ..  
cp utils/redis_init_script /etc/init.d/redis_6379  
cp redis.conf /etc/redis/6379.conf

 

/etc/init.d/redis_6379 start

vim /etc/redis/6379.conf ,找到如下的代码部分,修改

daemonize to yes  
pidfile to /var/run/redis_6379.pid  
logfile to /var/log/redis_6379.log  
dir to /var/redis/6379  
maxmemory 268435456

maxmemory 这里设置的是256mb,您可以按照您的配置自己设置。

设置开机启动:vim /etc/rc.d/rc.local,添加下面的代码

/etc/init.d/redis_6379 start

1.2 (可选操作)对于redis的磁盘存储

redis有几种内存的数据同步到磁盘的操作,详细可以参看文章:https://www.cnblogs.com/datang6777/p/7056272.html

我们选择的是:Append-only file, vim /etc/redis/6379.conf

appendonly yes      #启用aof持久化方式

appendfsync everysec     #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐

auto-aof-rewrite-percentage 200   #自动的bgrewriteaof,aof文件的大小超过基准百分之多少后触发bgrewriteaof。默认这个值设置为100,意味着当前aof是基准大小的两倍的时候触发bgrewriteaof。把它设置为0可以禁用自动触发的功能。
auto-aof-rewrite-min-size 128mb     #当前aof文件大于多少字节后才触发。避免在aof较小的时候无谓行为。默认大小为64mb。

#  然后就是触发检查的主逻辑,serverCron时间事件中每次都会检查现有状态和参数来判断是否需要启动bgrewriteaof。
#  如果aof文件增长百分率growth大于auto_aofrewrite_perc,则自动的触发后一个bgrewriteaof。

保存,重启redis

/etc/init.d/redis_6379 stop
/etc/init.d/redis_6379 start

 

2.安装redis的扩展。

yum install git
git clone git://github.com/owlient/phpredis
cd phpredis
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

如果上述出现报错,可以尝试用另外一个源:

git clone git://github.com/nicolasff/phpredis

php.ini中添加:

extension=redis.so

 

3.yii2 redis扩展的安装,以及配置:

在配置好的yii2根目录下面执行(您已经安装了composer)

composer require --prefer-dist yiisoft/yii2-redis

等待片刻就可以安装好yii2 的 redis 扩展

 

4.yii2中redis的配置

首先基于安全考虑,我们需要给redis设置密码,除非,您的redis端口关闭。

vim /etc/redis/6379.conf

找到行,把前面#去掉,后面加redis的密码

requirepass  rds423fsadD

重启redis就可以了。

/etc/init.d/redis_6379 stop  
/etc/init.d/redis_6379 start

这样redis密码验证就有了。

yii2的配置如下:

'redis' => [
            'class' => 'yii\redis\Connection',
            'hostname' => '127.0.0.1',
            'port' => 6379,
            'database' => 1,
      //'unixSocket' => '/var/run/redis/redis.sock',
      'password'  => 'rds423fsadD',
      // 'unixsocket' => '/var/run/redis/redis.sock',
    //	'unixSocket' => '/tmp/redis.sock',
        ],

重启redis , 这里  yii2就配置好redis了

5.redis的使用:刷新缓存:

[root@E3-1230v2-829 catalog]# redis-cli  
127.0.0.1:6379> auth rds!23v3cv3#ds  
OK  
127.0.0.1:6379> flushall  
OK  
127.0.0.1:6379>

redis-cli flushall  会报错(需要按照上面的步骤登录)

 

6.带有密码的redis,定时脚本清空缓存:

新建/www/script/redis_reflush_all.sh,添加如下内容

/usr/local/bin/redis-cli -a 'rds!2016!FDR' flushall

添加到cron中,   crontab -e,添加如下内容,保存

30 18 * * *  /bin/bash  /www/web/intosmile.com/shell/flushall.sh

就会定时清空redis的内容了

 

7. yii2中配置session 和 cache 使用redis

<?php
return [
    'components' => [
       
    'session' => [
      //'class' => 'yii\mongodb\Session',
      'class' => 'yii\redis\Session',
      //'db' => 'mongodb',
      //'sessionCollection' => 'session',
      'timeout' => 6000,
    ],
    
    'cache' => [
            'class' => 'yii\redis\Cache',
      //'class' => 'yii\caching\FileCache',  
      'keyPrefix' => 'rediscache-##$fdas5ygjD',
        ],

这样cache 就可以使用redis 了。

《yii2 – redis 配置》有17个想法

    1. php没有扩展,使用扩展的函数会报错把、?
      我用的是php5.4 ,不排除你安装的php里面默认把库包安装了。

  1. 您好!访问根目录文件,报错:Failed to open redis DB connection (127.0.0.1:6379, database=1): 13 – Permission denied

    Error Info: Permission denied

    服务也启动了,是哪里还有问题吗?

    1. 您吧redis的链接配置localhost 改成127.0.0.1
      如果还不行,说明你的redis没有启动,你在linux中查看一下,redis是否启动

  2. ‘redis’ => [
    ‘class’ => ‘yii\redis\Connection’,
    ‘hostname’ => ‘127.0.0.1’,
    ‘port’ => 6379,
    ‘database’ => 1,
    //’unixSocket’ => ‘/var/run/redis/redis.sock’,
    ‘password’ => ‘rds423fsadD’,
    // ‘unixsocket’ => ‘/var/run/redis/redis.sock’,
    // ‘unixSocket’ => ‘/tmp/redis.sock’,
    ],

    这一步是修改哪个文件哦?

admin进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注