我总结了关于Heroku Redis的内容
首先
由于在案件中使用Heroku Redis的频率增加,我想顺便整理一下信息以确认一下。
(谷歌老师的翻译能力大幅提升,降低了阅读原始文档的难度,这真是令人高兴的事情。)
Heroku Redis是什么?
您可以将Heroku的Redis服务器作为附加组件添加到您的应用程序中。
它提供了一个免费的套餐,并列出了以下计划的一览表。
Heroku Redis – 附加组件 – Heroku 元素
此外,Private Spaces还支持各个国家的区域。此外,您可以在下面检查各个附加功能的区域支持情况。
附加功能的运行可用性
命令行工具 (Command-line工具)
通过安装一个名为Heroku CLI的工具,您可以在命令行中操作Heroku。这个工具在确认和更改Redis设置等方面是必需的,所以请确保将其安装好。
$ heroku plugins:install heroku-redis
监视
您可以通过以下链接查看您所管理的 Heroku Redis 和 Heroku Postgresql 的清单。
点击想要确认的应用后,您可以看到以下排列整齐的图表进行确认。

限制计划在显示为”plan limit”,所以可以作为评估是否需要与最大数量进行扩展的判断依据。由于有相当多的项目,建议在实际页面进行确认。
环境信息
在安装插件时,连接的帐户信息将保存到Heroku的环境变量中,以REDIS_URL为项目名称。您可以通过应用程序仪表板中的“设置”选项卡内的“配置变量”来确认,或者可以使用以下命令来显示列表。
$ heroku config -a {APP_NAME}
=== {APP_NAME} Config Vars
...
REDIS_URL: redis://h:xxxxxxx@ec2-xxx-xxx-xxx-xxx.compute-x.amazonaws..com:xxxx
...
环境信息已经构建为URL,其结构如下所示。
redis://h:{密码}@{主机名}:{端口号}
在Heroku Redis环境维护期间,主机名等可能会发生变化。
因此,在代码中使用时,需要根据这些环境变量来构建信息。
对于PHP,您可以使用parse_url从URL中获取信息。
$url = parse_url(getenv('REDIS_URL'));
$host = $url['host'];
$port = $url['port'];
$password = $url['pass'];
此外,如果使用Predis包,在初始化时直接传递是可以的。
$redis = new Predis\Client(getenv('REDIS_URL'));
维护
定期进行维护,并且下次维护时间会在仪表盘上显示,标示为”维护时间窗口”。

或者,也可以通过命令进行确认。
$ heroku redis:info -a sushi
=== maturing-calmly-4191 (HEROKU_REDIS_ROSE_URL)
Plan Premium 0
Status Available
Created 2015-07-20 20:26 UTC
Timeout 300
Maxmemory noeviction
Maintenance window: Mondays 22:30 to Tuesdays 02:30 UTC
Persistence: AOF
如果不需要维护,则不会分配时间,并显示为“不需要”。
这段维护时间是随机分配的,但可以通过命令进行指定。
(但更改仅适用于Premium付费计划)
请按照以下方式进行设置。 (Please set it up as follows.)
$ heroku redis:maintenance --window="Sunday 14:30"
中文會有命令的說明。
-w, –window WINDOW # 设定每周的UTC维护窗口时间
根据某个信息,看起来需要设定每周的维护时间。
更改设置
时间到了
您可以设置超时时间的秒数。默认值为300秒。更改如下所示:
$ heroku redis:timeout maturing-deeply-2628 --seconds 60
当内存容量超载时的行为。
内存容量超载时的反应。
当内存容量过大时的行为。
可以设置当保存的数据超过最大内存容量时的行为。
默认情况下,设置为noeviction。
noeviction : エラーを返す
allkeys-lru : 使用頻度の低いキーを最初に削除
volatile-lru : 最初に有効期限が設定されている使用頻度の低いキーを削除
allkeys-random : ランダムにキーを削除
volatile-random : 有効期限が設定されているキーの中からランダムにキーを削除
volatile-ttl : 有効期限の設定されているキーの中で、短い期間が設定されているキーを削除
对于变更,按照以下方式进行。
$ heroku redis:maxmemory maturing-deeply-2628 --policy volatile-lru
使用方式
以下是一个使用PHP的示例,虽然与此无关,但我会把它附上。
正如Heroku的官方文档所提到的,我们将使用Predis的包。
用Composer进行安装,按照以下方式进行操作。
$ composer require predis/predis
使用autoload函数读取环境变量的连接信息并进行初始化。
require '/vendor/autoload.php';
Predis\Autoloader::register();
$redis = new Predis\Client(getenv('REDIS_URL'));
使用命令可以进行保存、提取等操作。
$redis->set('hoge', $data); //セット
$redis->expire('hoge', 100); //期限の設定(秒)
$redis->get('hoge'); //取得
使用的命令似乎符合Redis手册中所述的内容。
- Command reference – Redis
公式文件
-
- Heroku Redis | Heroku Dev Center
-
- Heroku Redis Maintenance Windows | Heroku Dev Center
- Understanding Heroku Redis Log Statements and Common Errors | Heroku Dev Center