为 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,是的,这是正确的,您仍然必须这样做以避免predis
和Phpredis
之间可能发生的冲突以上是关于为 Laravel 7 安装和配置 PhpRedis的主要内容,如果未能解决你的问题,请参考以下文章
如何在 CentOS 7 / Ubuntu 15.04 上安装 PHP 框架 Laravel
Laravel 7 w/ Laravel Excel:您的需求无法解决为一组可安装的软件包