php – 没有插件可以在Heroku上使用redis吗?
我正在研究使用Heroku来使用Redis的
PHP应用程序.我见过redis的各种插件.例如,使用Redis To Go,您可以在PHP代码中使用环境变量$_ENV [‘REDISTOGO_URL’]作为Redis服务器的URL.
大多数这些附加组件都有自己的定价方案,我想避免.我对heroku如何工作有点困惑.有没有办法可以在没有插件的情况下在我自己的Dynos上安装Redis? 例如,有一个工作器dyno充当服务器,另一个充当客户端吗?如果可能的话,我该怎么做: >在Dyno上安装和运行redis服务器?这和它一样吗? redis客户端的php代码假设有一个可以连接的主机和端口,但不知道它会是什么? $redis = new PredisClient(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地址
即使您在dyno上设置并运行Redis,我也不知道找到该dyno实例并向其发送redis请求的方法.这意味着您的Redis服务器可能必须与您的Web服务器/主应用程序在同一个dyno上运行. 这也意味着如果您尝试通过创建更多Web dynos来扩展应用程序,您还将创建更多本地redis实例.他们之间不会共享数据.这并不是一个特别可扩展的设计,但如果您的应用程序足够小,只需要一个网络动态,它可能会起作用.
默认情况下,Redis将其RDB文件和AOF日志写入磁盘.你需要定期将它们备份到某个地方,这样你就可以在你的dyno重新启动后获取和恢复.见documentation on Redis persistence.
每次dyno启动和恢复数据时,您都需要能够启动redis服务器.
如果您的Redis服务器与Web服务器在同一个dyno上运行,请减去主应用程序所需的RAM.你需要多少Redis内存? 以下是一些试图估算和跟踪Redis内存使用的问题: > Redis: Database Size to Memory Ratio? – 总体而言:我建议您阅读12 Factor Apps以了解更多有关heroku预期应用程序模型的信息. 简短的版本是dynos旨在成为独立的工作者,可以轻松创建和丢弃以满足需求,并且dynos访问各种资源来读取或写入数据并为您的应用程序提供服务. redis实例是资源的示例.正如您从上面的项目中看到的那样,通过使用redis附加组件,您可以获得保证静态,稳定和可访问的内容. 阅读材料: > http://www.12factor.net/ – 特别是Processes和Services (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |