laravel框架中使用redis时报错

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

非凡忍者 2020-09-01 17:55:27  57  收藏

分类专栏: php redis laravel 文章标签: redislaravelphp

版权

最近在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
  • 1
  • 2

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

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

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

REDIS_CLIENT=predis
  • 1

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用 Redis 做缓存的 Laravel 示例: 1. 安装 RedisLaravel 使用 Redis 需要先安装 Redis 扩展和 Predis 客户端库。可以通过以下命令安装: ```bash $ sudo apt-get install redis-server $ composer require predis/predis ``` 2. 配置 RedisLaravel 配置 Redis 需要在 `config/database.php` 文件添加 Redis 的连接信息。可以参考以下示例: ```php 'redis' => [ 'client' => 'predis', 'default' => [ 'host' => env('REDIS_HOST', '127.0.0.1'), 'password' => env('REDIS_PASSWORD', null), 'port' => env('REDIS_PORT', 6379), 'database' => 0, ], ], ``` 3. 使用 Redis 缓存 在 Laravel 使用 Redis 缓存可以使用 `Cache` Facade。可以参考以下示例: ```php use Illuminate\Support\Facades\Cache; // 缓存数据 Cache::put('key', 'value', $minutes); // 获取缓存数据 $value = Cache::get('key'); // 删除缓存数据 Cache::forget('key'); ``` 4. 使用 Redis 做 Session 存储 在 Laravel 使用 Redis 做 Session 存储也很简单,只需要在 `config/session.php` 文件修改 `driver` 为 `redis`,并配置 Redis 连接信息即可。可以参考以下示例: ```php 'driver' => env('SESSION_DRIVER', 'file'), 'connection' => env('SESSION_CONNECTION', 'default'), 'table' => 'sessions', 'store' => env('SESSION_STORE', null), 'lottery' => [2, 100], 'lifetime' => 120, 'expire_on_close' => false, 'encrypt' => false, 'files' => storage_path('framework/sessions'), 'cookie' => env( 'SESSION_COOKIE', Str::slug(env('APP_NAME', 'laravel'), '_').'_session' ), 'path' => '/', 'domain' => env('SESSION_DOMAIN', null), 'secure' => env('SESSION_SECURE_COOKIE'), 'http_only' => true, 'same_site' => 'lax', ``` 以上就是一个简单的 Laravel 使用 Redis 的示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值