我总结了关于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 的清单。

点击想要确认的应用后,您可以看到以下排列整齐的图表进行确认。

redis01.jpg

限制计划在显示为”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'));

维护

定期进行维护,并且下次维护时间会在仪表盘上显示,标示为”维护时间窗口”。

redis02.jpg

或者,也可以通过命令进行确认。

$ 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
广告
将在 10 秒后关闭
bannerAds