gpt4 book ai didi

php - 编写 PHP 批处理程序时的 Gearman 与 Redis

转载 作者:IT王子 更新时间:2023-10-29 05:55:39 26 4
gpt4 key购买 nike

当用 PHP 编写批处理程序时(显然,它必须被 cron-ed),使用 Gearman 和简单地存储要在 Redis 中处理的数据之间的实际区别是什么?

到目前为止,我的观察是,虽然 Gearman 能够实时推送工作,但由于 PHP 代码仅每隔一段时间运行一次,因此使用 Redis 的定期调度命令似乎或多或少是等效的。

此外,通过将 Gearman 绑定(bind)到 Gearman 库的调度生命周期,似乎使用 Gearman 给应用增加了不必要的复杂性。

综上所述,鉴于批处理器不会持续运行,是否可以假设 Gearman+PHP 与 Redis+PHP 相比没有优势?

最佳答案

Gearman 是分布式作业服务器,Redis 是分布式存储。所以这有点像比较苹果和橙子。

现在,可以使用 Redis 实现类似 Gearman 的功能(例如基于列表数据类型),但这是一种自己动手的方法。原理很简单,但细节决定成败。

最好的 Redis 分布式队列实现是针对 Ruby (Resque) 和 Python (Celery, RQ) 的。有一个用于 PHP 的 Resque 端口:

https://github.com/chrisboulton/php-resque

将 Gearman 与基于 Redis 的实现进行比较时,需要考虑重要的几点:

  • Gearman 作业将其完成通知客户端,可以是同步的也可以是异步的。如果您不实现特定的东西,Redis 队列将只支持没有完成通知的异步作业。

  • 代理的高可用性。 Gearman 提出了一个现成的策略。 Redis 没有。虽然可以配置主从复制,使用Redis Sentinel,但Redis HA并不是一个简单的问题。

  • 坚持不懈。 Gearman 支持内存队列,但也支持一些持久性后端(MySQL、Drizzle、sqlite、PostgreSQL)。 Redis 提出了各种持久性选项,但没有一个像 MySQL 或 PostgreSQL 这样的事务引擎那样可靠。

  • 垂直可扩展性。尽管 Redis 非常高效,但它是一个单线程进程。 Gearmand 是一个多线程进程,可能可以更好地扩展(考虑到单个进程)。

实现基于 Redis 的分布式作业系统既有趣又有趣,但如果您需要快速运行的东西,Gearman 是您的最佳选择。

关于php - 编写 PHP 批处理程序时的 Gearman 与 Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18273849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com