为 Laravel 7 安装和配置 PhpRedis

Posted

技术标签:

【中文标题】为 Laravel 7 安装和配置 PhpRedis【英文标题】:Installing and configuring PhpRedis for Laravel 7 【发布时间】:2020-10-09 23:51:19 【问题描述】:

配置 Laravel 7 以使用 phpRedis

前言

按照 Laravel 的建议,在互联网上搜索以试图弄清楚如何正确安装和使用 PhpRedis 之后,我找不到一个单一的事实来源或指南,它不会给我留下比答案更多的问题。

我希望在社区的帮助下,在这里创建并不断改进该指南。

本指南的目标

提供分步指南,以最正确和面向未来的方式在 Homestead 上。 在安装/配置 PhpRedis 后,说明如何使用 Redis。

为什么不直接使用 Predis?

根据 Laravel 7 文档,Predis 似乎已被废弃,在 Laravel 的未来版本中,它可能不再受支持。此外,PhpRedis 的性能优于 Predis。

PhpRedis vs Predis: Comparison on real production data

参考文献

How to Install PhpRedis for Laravel on Ubuntu

PhpRedis in Laravel - Redis Series Episode 2

Installing PHP REDIS PHP7 Branch On Fresh Install Homestead PHP7

Laravel 7 Redis Docs


在 Homestead 上全新安装 Laravel 7 时安装/配置 PhpRedis

本指南假设您在 Homestead 开发环境中使用 Laravel 7。

安装 PhpRedis 包。

1。 SSH 进入你的家园。

$ vagrant ssh

2。下载 PhpRedis 包。

$ wget https://github.com/phpredis/phpredis/archive/master.zip

注意:此链接可能已弃用。如果是,请检查最新版本

https://github.com/phpredis/phpredis/releases

下载完成后,您应该会看到一个名为 master.zip 的文件,使用命令ls

3。从 master.zip 中提取 phpredis-master 文件夹,然后删除 master.zip。将提取的文件夹移动到您的 /etc/ 目录。然后导航到提取的 phpredis-master 文件夹。

$ unzip master.zip
$ rm master.zip
$ sudo mv phpredis-master/ /etc/
$ cd /etc/phpredis-master/

4。为 PhpRedis PHP 扩展准备构建环境。

$ phpize
$ ./configure
$ make && make install

如果您收到错误 recipe for target 'install-modules' failed,请使用 sudo

$ sudo make instsall

5。使用 Vim 或您喜欢的编辑器更新 redis.ini 文件。

确保将 7.4 替换为您正在使用的 PHP 版本。您可以通过运行php -v 进行检查。在我的例子中,它返回 PHP 7.4.4。然后我运行 ls /etc/php/ 列出我的 PHP 文件夹并找到 /etc/php/7.4/ 目录。

$ sudo vim /etc/php/7.4/fpm/conf.d/redis.ini

您现在应该在 Vim 编辑器中打开了该文件。复制下面的行,然后在 Vim 中按 i 开始插入。然后通过右键单击并选择粘贴或按 Shift+Ins 进行粘贴。

extension=/etc/phpredis-master/modules/redis.so

添加行后,按 Esc 退出编辑模式,然后按 :wq 保存并退出,然后按 Enter .

6。重启服务

确保你在目录/etc/phpredis-master/

再次,将 7.4 替换为您正在使用的 PHP 版本。

$ sudo service php7.4-fpm restart
$ sudo service nginx restart

7。确保一切正常。

$ sudo nginx -t

如果成功,这应该输出以下内容。

nginx:配置文件/etc/nginx/nginx.conf 语法没问题 nginx:配置文件/etc/nginx/nginx.conf 测试成功

配置 Laravel 7 以使用 PhpRedis。

您现在应该在您的服务器上安装了 PhpRedis。我们现在将配置 Laravel 以开始使用 PhpRedis。

1。将 Redis 别名更改为 RedisManager

打开 config/app.php 然后在 aliases 数组中将 Redis 更改为 RedisManager

'aliases' => [
    ...
    'RedisManager' => Illuminate\Support\Facades\Redis::class,
    ...
]

您可以将 Redis 重命名为 RedisManager 以外的名称,但我只是遵循 Laravel 文档中的建议以保持一致性。

测试 Redis 是否正常工作

将以下内容添加到您的 web.php 路由文件中,然后导航到应用程序中的路由。

Route::get('/redis', function () 
    $app = RedisManager::connection();
    $app->set('key', 'Testing PhpRedis');
    echo $app->get('key');
);

导航到 yoursite.local/redis 时,您应该会看到消息“Testing PhpRedis”。

在您的项目中使用 Redis

安装 PhpRedis 并更新 Laravel 配置后,您现在应该可以开始在项目中使用 Redis。

在你的控制器中使用 Redis

// ExampleController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use RedisManager;

class ExampleController extends Controller

    public function index()
    
        $visits = RedisManager::incr('visits');

        return $visits;
    


常见问题解答

为什么我们必须将 Redis 别名重命名为 RedisManager?

再一次,既然 Laravel 7 默认使用 PhpRedis,为什么我们必须将 Redis 别名重命名为 RedisManager?

将 Redis 别名重命名为 RedisManager 将如何影响我的应用程序以及我如何使用它?

Laravel 7 说 PhpRedis 是默认的,那我为什么要这么做呢?

我已经成功地让 PhpRedis 在本地工作,但是当我在 Vapor 上部署时,它不起作用。我该怎么办?

如果我不使用 Homestead 怎么办?


待办事项

研究使用$ wget https://github.com/phpredis/phpredis/archive/master.zip 下载 PhpRedis 包是否是安装包的最佳方式,或者是否有更好的选择,例如可能通过 PECL 安装。

【问题讨论】:

【参考方案1】:

您可以使用以下命令简化安装 PHPRedis 的部分:

vagrant ssh
sudo apt-get install php-redis
sudo apt-get install php8.0-redis

上面的示例首先将安装默认模块 PHPRedis,然后安装 PHPRedis 扩展的特定 PHP 版本。所以这个例子是针对 PHP 8.0 的,如果你需要 PHP 7.3 版本你应该把php8.0-redis 改成php7.3-redis

【讨论】:

谢谢!您是否碰巧知道这将取代哪些步骤?似乎它将取代第 2 步到第 4 步。 @Josh 这是整个“安装 PhpRedis 包”部分的替代品。【参考方案2】:

在 Homestead 本地安装的非常好的指南。为方便起见,我会在 vagrant ssh 之后运行 sudo su,以便您可以以 root 身份运行所有内容。

【讨论】:

【参考方案3】:

如果您使用 Laravel/Forge,则不需要安装 Phpredis,因为 Forge 在服务器配置期间安装了它。

你会发现extension=redis.so已经存在于sudo nano /etc/php/7.4/fpm/conf.d/20-redis.ini

其余的过程应该与指南类似,但我还没有自己测试。将发布我的发现。

【讨论】:

感谢您的反馈。我假设您仍然需要将别名“Redis”更新为“RedisManager”,对吗? @Josh,是的,这是正确的,您仍然必须这样做以避免predisPhpredis 之间可能发生的冲突

以上是关于为 Laravel 7 安装和配置 PhpRedis的主要内容,如果未能解决你的问题,请参考以下文章

php 关于laravel5.7框架

安装Laravel

如何在 CentOS 7 / Ubuntu 15.04 上安装 PHP 框架 Laravel

Laravel 7 w/ Laravel Excel:您的需求无法解决为一组可安装的软件包

Laravel 使用 Intervention/image 配置和修改驱动 imagick

使用 Nuxt 前端实现 Laravel 7 Passport 身份验证