php – 没有插件可以在Heroku上使用redis吗?

前端之家收集整理的这篇文章主要介绍了php – 没有插件可以在Heroku上使用redis吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在研究使用Heroku来使用Redis的 PHP应用程序.我见过redis的各种插件.例如,使用Redis To Go,您可以在PHP代码中使用环境变量$_ENV [‘REDISTOGO_URL’]作为Redis服务器的URL.

大多数这些附加组件都有自己的定价方案,我想避免.我对heroku如何工作有点困惑.有没有办法可以在没有插件的情况下在我自己的Dynos上安装Redis?

例如,有一个工作器dyno充当服务器,另一个充当客户端吗?如果可能的话,我该怎么做:

>在Dyno上安装和运行redis服务器?这和它一样吗?
安装在任何其他unix盒子上?我可以ssh到它并安装我想要的任何东西吗?
>有一个Dyno连接到
另一个通过TCP的IP /端口?工人dynos有他们自己的
我可以使用可引用的IP地址或命名的URL?我能以某种方式从PHP动态获取它们吗?

redis客户端的PHP代码假设有一个可以连接的主机和端口,但不知道它会是什么?

$redis = new Predis\Client(array(
        "scheme" => "tcp","host" => $host,//how do i get the host/port of a dyno? 
        "port" => $port));
在dyno上运行redis是一个有趣的想法.你可能需要创建一个redis buildpack,这样你的dynos就可以下载并运行redis了.至于 “redis has no dependencies other than a working GCC compiler and libc”,这在技术上应该是可能的.

但是,以下是您可能遇到的一些问题:

> Heroku dynos没有静态IP地址

07002

即使您在dyno上设置并运行Redis,我也不知道找到该dyno实例并向其发送redis请求的方法.这意味着您的Redis服务器可能必须与您的Web服务器/主应用程序在同一个dyno上运行.

这也意味着如果您尝试通过创建更多Web dynos来扩展应用程序,您还将创建更多本地redis实例.他们之间不会共享数据.这并不是一个特别可扩展的设计,但如果您的应用程序足够小,只需要一个网络动态,它可能会起作用.
> Heroku dynos有一个短暂的文件系统

07003

默认情况下,Redis将其RDB文件和AOF日志写入磁盘.你需要定期将它们备份到某个地方,这样你就可以在你的dyno重新启动后获取和恢复.见documentation on Redis persistence.
> Heroku dynos经常重启

07005

每次dyno启动和恢复数据时,您都需要能够启动redis服务器.
> Heroku dynos拥有512MB的RAM

07006

如果您的Redis服务器与Web服务器在同一个dyno上运行,请减去主应用程序所需的RAM.你需要多少Redis内存?

以下是一些试图估算和跟踪Redis内存使用的问题:

> Redis: Database Size to Memory Ratio?
> Profiling Redis Memory Usage

总体而言:我建议您阅读12 Factor Apps以了解更多有关heroku预期应用程序模型的信息.

简短的版本是dynos旨在成为独立的工作者,可以轻松创建和丢弃以满足需求,并且dynos访问各种资源来读取或写入数据并为您的应用程序提供服务. redis实例是资源的示例.正如您从上面的项目中看到的那样,通过使用redis附加组件,您可以获得保证静态,稳定和可访问的内容.

阅读材料:

> http://www.12factor.net/ – 特别是ProcessesServices
> The Heroku Process Model
> Heroku Blog – The Process Model

原文链接:https://www.f2er.com/php/137282.html

猜你在找的PHP相关文章