ThinkPHP5.1中使用Redis来缓存

问题

在thinkphp5.1项目中需要引入Redis,安装redis后在tp5.1写入相关的操作代码后却一直报错,可能出现的问题如下:
1. 安装不正确,即redis没正常运行
2. 没有添加php_redis驱动扩展
3. php.ini修改位置不正确
4. tp5.1中配置代码不正确

解决方案

  1. 首先检查在GUI界面下是否能够连接到Redis,如果不能则要检查Redis的安装(linux用户推荐从官网下载源码后直接make后使用,win用户推荐下载github上微软维护的另一个二进制版本,需要)
  2. 如果安装没有问题,则需要下载响应的动态链接库驱动,还记得java在使用MySQL的时候需要引入驱动包,在这里需要引入dll动态连接库文件(http://pecl.php.net/package/redis),需要注意的是必须在phpinfo页面查看当前php的版本,线程安全与否,必须引入相对应的dll,笔者用的php7.0.x只引入了php_redis.dll一个文件,其他版本如5.6.x请参考相关文档。
  3. 笔者使用的是wamp服务器,而在wamp引入dll文件并不是在php目录下的php.ini而是在\wamp64\bin\apache\apache2.4.23\bin\php.ini ,可以在phpinfo中查看配置Loaded Configuration File 的参数即可。
  4. 如果以上安装正确,可以在命令行下输入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"));

你可能感兴趣的:(PHP,ThinkPhp,Redis)