问题
在thinkphp5.1项目中需要引入Redis,安装redis后在tp5.1写入相关的操作代码后却一直报错,可能出现的问题如下:
1. 安装不正确,即redis没正常运行
2. 没有添加php_redis驱动扩展
3. php.ini修改位置不正确
4. tp5.1中配置代码不正确
解决方案
- 首先检查在GUI界面下是否能够连接到Redis,如果不能则要检查Redis的安装(linux用户推荐从官网下载源码后直接make后使用,win用户推荐下载github上微软维护的另一个二进制版本,需要翻墙)
- 如果安装没有问题,则需要下载响应的动态链接库驱动,还记得java在使用MySQL的时候需要引入驱动包,在这里需要引入dll动态连接库文件(http://pecl.php.net/package/redis),需要注意的是必须在phpinfo页面查看当前php的版本,线程安全与否,必须引入相对应的dll,笔者用的php7.0.x只引入了php_redis.dll一个文件,其他版本如5.6.x请参考相关文档。
- 笔者使用的是wamp服务器,而在wamp引入dll文件并不是在php目录下的php.ini而是在\wamp64\bin\apache\apache2.4.23\bin\php.ini ,可以在phpinfo中查看配置Loaded Configuration File 的参数即可。
如果以上安装正确,可以在命令行下输入php,如果没有报warning,则说明驱动安装正确,接下来,在tp5.1中配置使用它,在官方文档并没讲清楚怎么去使用,但是在Cache中有相关的驱动函数,我们只需要配置即可,具体的配置如下:
单一缓存机制配置
return ['type' => 'Redis','host' => '127.0.0.1','port' => '6379','password' => '','timeout' => 3600
];
多层并存缓存机制配置
'cache' => [// 选择模式'type' => 'complex',// 默认(文件缓存)'default' => [// 文件缓存'type' => 'File',// 缓存保存目录'path' => CACHE_PATH,// 缓存前缀'prefix' => '',// 缓存有效期 0表示永久缓存'expire' => 0,],// Redis缓存'redis' => ['type' => 'Redis','host' => '127.0.0.1','port' => '6379','password' => '123456','timeout' => 3600]],
接下来在控制中就可以使用了,
Cache::store('redis')->set('key1','123456789');
Cache::store('redis')->get('key1');
或者:
$redis = new Redis();
$c = $redis->set("123","456");
print_r($redis->get("123"));