Windows 系统下的 Yii 1.1 RedisCache 配置

本文提供了一个Windows 系统下,Yii PHP框架v1.1版本下,Redis Cache 的详细配置范本。

Redis是在磁盘上持久存储的内存数据库,支持string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)等多种数据结构。Redis 具有高性能,支持高并发、分布式等特性,因此常用于高并发、分布式部署的应用场景,用作数据库、缓存或消息代理。

Yii PHP Framework 是一个优秀的、高性能的 php开发框架,支持memcache、APC、XCACHE、redis、Zend Data Cache、WinCache、文件和数据库等多种缓存。虽然Yii 自1.1.14 版本开始就支持使用 redis 作为缓存后端,但网上的相关资料中,很多是采用 rediscache、YiiRedis等 Yii 扩展,这些扩展一般采用 predis 作为 redis 服务器的 php 客户端。在采用虚拟主机、不方便修改php.ini配置的情况下,predis 当然是实现 Yii redis 作缓存后端的较好选择,在有条件的情况下,还是建议安装php的官方扩展,链接是:https://pecl.php.net/package/redis ,即phpredis。它采用 C语言编写,具备更好的性能。下面以windows环境下的配置为例,介绍、总结一下 Yii 的 rediscache 配置。

一、预备
  • OS:Windows 64-bit Sytem。Red Hat、CentOS、Ubuntu、Debian等 Linux OS 另文介绍。
  • WAMP集成包。
  • Redis on Windows。官方链接:https://github.com/MSOpenTech/redis
  • phpredis extension。官方链接:https://pecl.php.net/package/redis 。这个要根据php的版本来选择,redis 3.0.0以上版本要求PHP为7.0或以上版本。PHP5.2及以上、PHP5.6及以下就只能选2.2.7版。选择 Non Thread Safe (NTS) 还是 Thread Safe (TS),最简单的办法是用 phpinfo() 看"Thread Safety"这个参数是 'Enabled' 还是 'Disabled'。如下图中就是 TS 线程安全的。

图1、phpinfo() 中的 TS信息

  • Yii 1.1.17,以下配置是基于这个版本的。

二、安装

这些软件都是很成熟的,除了Windows之外都是开源软件,官方文档都还是很详细的,安装起来也较为简单。这里总结几点:

1、Redis的配置文件:安装目录下有一个 redis.windows.conf,这个就是 Windows版的配置文件(模板),你可以copy 一份命名为redis.conf。在文件浏览器下双击 redis-server.exe 会以默认配置启动,所以建议在命令行下执行 redis-server redis.windows.conf

图2、redis-server console 界面


2、Redis 提供了命令行式的客户端。建议安装一个图形客户端,比如 Redis Desktop Manager,这样更直观。一些。

图3、redis-cli 界面


图4、Redis Desktop Manager 界面

Redis Desktop Manager

3、Redis Auth

Redis error: ERR Client sent AUTH, but no password is set

出现这个错误是因为客户端发送了 AUTH,但没有设置密码。用编辑器打开 redis.windows.conf (或者你所采用的 redis 配置文件),定位到 requirepass,修改后面的字符串为你自己的密码。注意在客户端也要做对应修改。如果是命令行客户端就先运行 AUTH。

三、Yii 配置(cache 和 session cache)

1、主应用配置文件 protected/config/main.php

'components' => [
    // ...
    'cache'=> [
        'class'=>'CRedisCache', //if you dont set up the servers options it will use the default one
        //"host=>'127.0.0.1',port=>6379"
        'hostname'=>'localhost',
        'port'=>6379,
        'password'=> 'foobared',  // 改为你自己在 redis 配置文件中设置的密码
        'database'=>1,
        'options'=>STREAM_CLIENT_CONNECT,
        'timeout'=> 60,  // 连接到redis超时时间,单位秒。如果没设置,将使用 php.ini 中的 default_socket_timeout 设置
    ],
    // ...
    'sessionCache' => [
       'class' =>'CRedisCache',   // 写为 'system.caching.CRedisCache' 也可以的
       'hostname'=>'localhost',
       'port'=>6379,
       'database' => 2,
       'password'=> 'foobared',   // 改为你自己在 redis 配置文件中设置的密码
       'options'=>STREAM_CLIENT_CONNECT,
   ],
    'session' => [
       'class' => 'CCacheHttpSession',
       'autoStart' => true,
       'cacheID' => 'sessionCache', //we only use the sessionCache to store the session
       'cookieMode' => 'only',
       'timeout' => 1440           // 可选项。缺省值是1440秒。    
    ],
    // ...         

2、备注

组件的主缓存和session 缓存应采用不同的 database。

'foobared' 是 redis Windows 缺省AUTH密码,请将它改为足够安全的密码。

声明:码字辛苦,转载请注明出处。本文链接:http://www.worldlink.com.cn/post/yii-11-rediscache...

喜歡:
4

To the top