Windows 系统下的 Yii 1.1 RedisCache 配置
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 界面
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...