laravel框架中使用redis时报错:Please make sure the PHP Redis extension is installed and enabled 问题解决

1 篇文章 0 订阅
1 篇文章 0 订阅

最近在Laravel项目中需要用到Redis,于是安装之。
本以为先安装好Redis Server端,再按照Laravel手册用composer安装predis/predis包,最后在.env里修改REDIS相关配置就可以使用了,没想到访问直接报错了:

LogicException
Please make sure the PHP Redis extension is installed and enabled.

用phpinfo()打印信息,发现确实没有redis驱动,于是准备安装驱动。
php的redis驱动扩展官方包不提供,需要自己安装。
于是去百度了一下,安装方法五花八门,有下载源码手动编译安装的,有用pecl安装的,看的我顿时就蒙了。我只是想用一下Redis啊,为什么会这么复杂!记得以前使用时只需要composer安装predis就可以了啊,为什么现在就不行了呢?
带着这个问题,又去百度一通,终于弄明白了。

php连接redis常用的有两种驱动,phpredis和predis。
phpredis是以php扩展方式安装的,安装步骤比较繁琐,执行效率稍高。
predis是用php代码写的,安装非常简单,执行效率稍差。

这两种驱动对应的实例化代码如下:

$redis = new Redis(); //phpredis
$redis = new \Predis\Client(); //predis

这下明白了,这两种驱动使用一种就可以了,没必要都安装。
那么问题来了,怎么指定使用哪种驱动呢?
查看config/database.php配置文件发现有如下配置项:

    'redis' => [
        'client' => env('REDIS_CLIENT', 'phpredis'),

phpredis!怎么这么眼熟,这不就是上面提到的两种驱动中的一种吗,于是在.env里添加一条配置:

REDIS_CLIENT=predis

然后访问页面,一切正常!启动队列消费,也正常。至此,问题解决了。

Redis是非常轻量级的应用,一般都在局域网内使用,传输带宽不是问题。它的作者为此设计了一个足够轻量的通信协议RESP(Redis Serialization Protocol),这是一种纯文本的协议,非常直观,所以用php代码能够很容易地实现此驱动。
在大多数情况下,使用predis驱动就足够了,执行效率真的感觉不到差别,除非应用重度使用redis。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值